Главная /
Параллельное программирование с использованием инструментов и технологий Intel, Проверка знаний /
Рассмотрим задачу использования кольцевого буфера (задача "поставщик-потребитель"). Функции AddItemToBuffer и RemoveItemFromBuffer модифицируют структуру данных, разделяемую поставщиком и потребителем, и не используют синхронизацию. Предположим, что прогр
Рассмотрим задачу использования кольцевого буфера (задача "поставщик-потребитель"). Функции AddItemToBuffer и RemoveItemFromBuffer модифицируют структуру данных, разделяемую поставщиком и потребителем, и не используют синхронизацию. Предположим, что программа может выполняться как на однопроцессорных, так и на многопроцессорных системах, и одновременно могут выполняться несколько потоков-поставщиков и потоков-потребителей. Укажите, является ли решение корректным (всегда работает), или (2) некорректным (никогда не работает), или (3) опасным (в одних случаях работает, в других – нет).
Semaphore Empty = N; // Буфер содержит N записейFull = 0;() {
Empty.P();
AddItemToBuffer();
Full.V();
}() {
Full.P();
RemoveItemFromBuffer();
Empty.V();
}
вопрос
Правильный ответ:
приведенное решение корректно
приведенное решение некорректно
приведенное решение опасно
Сложность вопроса
40
Сложность курса: Параллельное программирование с использованием инструментов и технологий Intel, Проверка знаний
78
Оценить вопрос
Комментарии:
Аноним
Я провалил сессию, какого рожна я не нашёл этот сайт с решениями по интуит до того как забрали в армию
28 фев 2020
Аноним
спасибо за тест
08 фев 2020
Другие ответы на вопросы из темы программирование интуит.
- # Отметьте действия, не относящиеся к операции создания потока
- # На значения каких критериев влияет размер кванта при использовании вытесняющих алгоритмов планирования?
- # Рассмотрим задачу использования кольцевого буфера (задача "поставщик-потребитель"). Функции AddItemToBuffer и RemoveItemFromBuffer модифицируют структуру данных, разделяемую поставщиком и потребителем, и не используют синхронизацию. Предположим, что программа может выполняться как на однопроцессорных, так и на многопроцессорных системах, и одновременно могут выполняться несколько потоков-поставщиков и потоков-потребителей. Укажите, является ли решение корректным (всегда работает), или (2) некорректным (никогда не работает), или (3) опасным (в одних случаях работает, в других – нет). int Bufs = N; // Буфер содержит N записейM = unlocked;Full = 0;() { while(1){ M.Lock(); if( Bufs != 0 ){ Bufs --; M.Unlock(); break; } M.Unlock(); } AddItemToBuffer(); }() { while(1){ M.Lock(); if( Bufs != N ){ Bufs ++; M.Unlock(); break; } M.Unlock(); } RemoveItemFromBuffer(); }
- # В синхронном режиме передачи завершение функции отправки сообщения происходит:
- # Признаками наличия неравномерной вычислительной нагрузки между потоками являются: