Главная / Параллельное программирование с использованием инструментов и технологий Intel, Проверка знаний / Рассмотрим задачу использования кольцевого буфера (задача "поставщик-потребитель"). Функции AddItemToBuffer и RemoveItemFromBuffer модифицируют структуру данных, разделяемую поставщиком и потребителем, и не используют синхронизацию. Предположим, что прогр

Рассмотрим задачу использования кольцевого буфера (задача "поставщик-потребитель"). Функции 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(); }

вопрос

Правильный ответ:

приведенное решение корректно
приведенное решение некорректно
приведенное решение опасно
Сложность вопроса
53
Сложность курса: Параллельное программирование с использованием инструментов и технологий Intel, Проверка знаний
78
Оценить вопрос
Очень сложно
Сложно
Средне
Легко
Очень легко
Комментарии:
Аноним
Я провалил сессию, почему я не увидел этот сайт с ответами с тестами intuit до зачёта
10 мар 2017
Аноним
Я завалил зачёт, какого чёрта я не увидел данный сайт с решениями по тестам интуит до этого
19 ноя 2016
Оставить комментарий
Другие ответы на вопросы из темы программирование интуит.