Главная /
Intel Parallel Programming Professional (Introduction) /
Рассмотрим задачу использования кольцевого буфера (задача "поставщик-потребитель"). Функции 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();
}
вопрос
Правильный ответ:
приведенное решение корректно
приведенное решение некорректно
приведенное решение опасно
Сложность вопроса
89
Сложность курса: Intel Parallel Programming Professional (Introduction)
54
Оценить вопрос
Комментарии:
Аноним
Я завалил экзамен, почему я не увидел этот великолепный сайт с решениями по тестам интуит прежде
03 окт 2017
Аноним
Большое спасибо за подсказками по intuit.
12 июл 2016
Другие ответы на вопросы из темы программирование интуит.
- # В параллельной области в OpenMP-программе необходимо выделить память под общую для всех потоков переменную. Отметьте верные варианты кода
- # Пусть написана следующая параллельная программа: int *a; #pragma omp parallel { … #pragma omp critical= new int [10]; … } Какие проблемы могут наблюдаться при выполнении параллельной программы?
- # Пусть написана следующая параллельная программа: omp_set_num_threads(4) #pragma omp parallel num_threads(3) { … } #pragma omp parallel { … } Сколько потоков будет создано в первой и во второй секции?
- # Для чего в операциях "точка-точка" используется тег:
- # Время, затраченное на следующие операции, может быть причислено к непроизводительным издержкам при работе с потоками: