База ответов ИНТУИТ

Intel Parallel Programming Professional (Introduction)

<<- Назад к вопросам

Рассмотрим решение задачи взаимного исключения для двух потоков (i - номер потока). Какое из условий постановки задачи взаимного исключения может быть нарушено в предлагаемом решении?
bool flag0 = false, flag1 = false;flag2 = 0;( true ){ flagi = true; flag2 = 1 - i; while( flag1-i && flag2 == 1 - i )   ; CSi(); flagi = false; NCSi();}

(Отметьте один правильный вариант ответа.)

Варианты ответа
решение о вхождении потоков в их критические секции не откладывается на неопределенный срок, а является конечным во времени
предлагаемое решение является корректным и не нарушает ни одного из перечисленных условий(Верный ответ)
критические секции не должны иметь приоритета в отношении друг друга
одновременно внутри критической секции должно находиться не более одного потока
остановка какого-либо потока вне его критической секции не должна влиять на дальнейшую работу потоков по использованию критического ресурса
Похожие вопросы
Рассмотрим решение задачи взаимного исключения для двух потоков (i - номер потока). Какое из условий постановки задачи взаимного исключения может быть нарушено в предлагаемом решении?
bool flag0 = false, flag1 = false;( true ){ flagi = true; while( flag1-i )   ; CSi(); flagi = false; NCSi();}
Рассмотрим решение задачи взаимного исключения для двух потоков (i - номер потока). Какое из условий постановки задачи взаимного исключения может быть нарушено в предлагаемом решении?
bool flag0 = false, flag1 = false;( true ){ while( flag1-i )   ; flagi = true; CSi(); flagi = false; NCSi();}
Рассмотрим решение задачи взаимного исключения для двух потоков (i - номер потока). Какое из условий постановки задачи взаимного исключения может быть нарушено в предлагаемом решении?
bool flag0 = true, flag1 = false;( true ){ while( !flagi )   ; CSi(); flagi = false; flag1-i = true; NCSi();}
Укажите положения, верные для алгоритма Петерсона решения задачи взаимного исключения.
Укажите положения, верные для решения задачи взаимного исключения, основанного на прерываниях.
Укажите положения, верные для решений задачи взаимного исключения, основанного на использовании специальных команд ЦП (Test&Set, Swap,…).
Какое количество потоков может быть заведено в рамках параллельной секции?
Рассмотрим задачу использования кольцевого буфера (задача "поставщик-потребитель"). Функции AddItemToBuffer и RemoveItemFromBuffer модифицируют структуру данных, разделяемую поставщиком и потребителем, и не используют синхронизацию. Предположим, что программа может выполняться как на однопроцессорных, так и на многопроцессорных системах, и одновременно могут выполняться несколько потоков-поставщиков и потоков-потребителей. Укажите, является ли решение корректным (всегда работает), или (2) некорректным (никогда не работает), или (3) опасным (в одних случаях работает, в других – нет).
Semaphore Empty = N;  // Буфер содержит N записейFull = 0;() { Empty.P(); AddItemToBuffer(); Full.V();}() { Full.P(); RemoveItemFromBuffer(); Empty.V();}
Пусть написана следующая параллельная программа:
int *a;= new int [10];#pragma omp parallel{…[num_th] = num_th;…}
Какие проблемы могут наблюдаться при выполнении параллельной программы, если num_th это номер потока (потоков меньше 10)?
Пусть написана следующая параллельная программа:
int *a;= new int [10];#pragma omp parallel shared(a){…[num_th] = num_th;…}
Какие проблемы могут наблюдаться при выполнении параллельной программы, если num_th это номер потока (потоков меньше 10)?