Главная / Параллельное программирование с OpenMP / Найдите ошибку в следующем фрагменте программы: #define N 10 int A[N],B[N], sum; #pragma omp parallel default(shared) num_threads(10) { int iam=omp_get_thread_num(); if (iam ==0) { #pragma omp critical (update_a) #pragma omp critical (update_b) sum +=A[ia

Найдите ошибку в следующем фрагменте программы: #define N 10 int A[N],B[N], sum; #pragma omp parallel default(shared) num_threads(10) { int iam=omp_get_thread_num(); if (iam ==0) { #pragma omp critical (update_a) #pragma omp critical (update_b) sum +=A[iam]; } else { #pragma omp critical (update_b) #pragma omp critical (update_a) sum +=B[iam]; } }

вопрос

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

критические секции, определяемые директивой critical, не могут быть вложены друг в друга
дедлок - взаимная блокировка нитей, возникающая при входе master-нитью в критическую секцию с именем update_a и любой другой нитью в секцию с именем update_b (в этом случае вложенные критические секции не смогут быть обработаны)
в данном фрагменте программы ошибки нет
Сложность вопроса
67
Сложность курса: Параллельное программирование с OpenMP
28
Оценить вопрос
Очень сложно
Сложно
Средне
Легко
Очень легко
Комментарии:
Аноним
Я помощник профессора! Тотчас заблокируйте сайт vtone.ru с ответами на интуит. Я буду жаловаться!
15 июн 2017
Аноним
Спасибо за сайт
13 май 2017
Оставить комментарий
Другие ответы на вопросы из темы программирование интуит.