Главная /
Параллельное программирование с использованием инструментов и технологий Intel, Проверка знаний /
Рассмотрим задачу использования кольцевого буфера (задача "поставщик-потребитель"). Функции AddItemToBuffer и RemoveItemFromBuffer модифицируют структуру данных, разделяемую поставщиком и потребителем, и не используют синхронизацию. Предположим, что прогр
Рассмотрим задачу использования кольцевого буфера (задача "поставщик-потребитель"). Функции AddItemToBuffer и RemoveItemFromBuffer модифицируют структуру данных, разделяемую поставщиком и потребителем, и не используют синхронизацию. Предположим, что программа может выполняться как на однопроцессорных, так и на многопроцессорных системах, и одновременно могут выполняться несколько потоков-поставщиков и потоков-потребителей. Укажите, является ли решение корректным (всегда работает), или (2) некорректным (никогда не работает), или (3) опасным (в одних случаях работает, в других – нет).
Semaphore Empty = N; // Буфер содержит N записейM = unlocked;Full = 0;() {
Empty.P();
M.Lock();
AddItemToBuffer();
Full.V();
}() {
full.P();
M.Lock();
RemoveItemFromBuffer();
empty.V();
}
вопрос
Правильный ответ:
приведенное решение корректно
приведенное решение некорректно
приведенное решение опасно
Сложность вопроса
30
Сложность курса: Параллельное программирование с использованием инструментов и технологий Intel, Проверка знаний
78
Оценить вопрос
Комментарии:
Аноним
Очень сложные тесты
18 окт 2019
Аноним
Какой человек находит эти ответы с интуитом? Это же крайне просто
29 май 2019
Аноним
Зачёт прошёл. Бегу в клуб отмечать 5 в зачётке по тесту
26 май 2019
Другие ответы на вопросы из темы программирование интуит.
- # Укажите положения, верные для алгоритма Петерсона решения задачи взаимного исключения.
- # В программе на OpenMP распараллелен следующий цикл, где выполнение функции f() может занимать существенно разное время в зависимости от значения входного аргумента #pragma omp for(i = 0; i < 1000; i++) с += func(i); Каким образом можно добиться наилучшей балансировки вычислительной нагрузки между потоками?
- # Пусть написана следующая параллельная программа: int *a; #pragma omp parallel { … #pragma omp critical= new int [10]; … } Какие проблемы могут наблюдаться при выполнении параллельной программы?
- # Пусть написана следующая параллельная программа: int sum = 0; #pragma omp parallel for for(int i = 0; i < 100; i++) sum++; Какие проблемы могут наблюдаться при выполнении параллельной программы?
- # Какие из директив позволяют выполнить действия только в одном потоке