Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Структурированный блок программы





}

Одномоментно, критическую секцию может выполнять только одна нить из всех нитей с данным именем. Если критическая секция уже выполняется какой-либо нитью P0, то все другие нити, выполнившие директиву для секции с данным именем, будут заблокированы, пока нить P0 не закончит выполнение данной критической секции, после чего одна из заблокированных на входе нитей войдет в секцию. Если на входе в критическую секцию стояло несколько нитей, то одна из них случайным образом выбирается, остальные заблокированные нити продолжают ожидание. Критические секции, не имеющие имен ассоциируются с одним и тем же именем критической секции.

 

Частым случаем использования критических секций на практике является обновление общих переменных. Например, если переменная SUM является общей и оператор вида SUM=SUM+Expr находится в параллельной секции программы, то при одновременном выполнении данного оператора несколькими нитями можно получить некорректный результат. Чтобы избежать такой ситуации можно воспользоваться механизмом критических секций или специально предусмотренным для таких случаев оператором atomic.

Пример: иллюстрирует моделирование очереди, в которой задание выбирается из очереди и обрабатывается. Для защиты от многократной выборки нитями из очереди одного и того же задания операция выборки должна выполняться в критической секции. Т.к. две очереди в этом примере идентичны, то они защищены критическими секциями с разными именами: xaxis и yaxis.

#pragma omp parallel shared(x, y) private(x_next, y_next)

{

#pragma omp critical (xaxis)

x_next = dequeue(x);

work(x_next);

#pragma omp critical (yaxis)

y_next = dequeue(y);

work(y_next);

}

Вычисление максимального значения элементов массива a. В программе выполнено итерационное распараллеливание с использованием критической секции внутри каждой порции итераций.

Массив a разбивается на части(цикл по i) для поиска максимального значения в каждой порции элементов массива, критическая секция выполняет обновление значения общей переменной max по следующему принципу: если какая-то нить находит новое максимальное значение, начинает выполняться блок критической секции, в этом случае все нити останавливают свою работу и по очереди входят в критическую секцию, выполняя обновление значение max.

После того, как все нити по очереди прошли критическую секцию и обновили значение max, поиск максимального значения продолжается в параллельном режиме в каждой порции каждой нити.







Дата добавления: 2015-08-12; просмотров: 467. Нарушение авторских прав; Мы поможем в написании вашей работы!




Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...


Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...


Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...


Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...

Реформы П.А.Столыпина Сегодня уже никто не сомневается в том, что экономическая политика П...

Виды нарушений опорно-двигательного аппарата у детей В общеупотребительном значении нарушение опорно-двигательного аппарата (ОДА) идентифицируется с нарушениями двигательных функций и определенными органическими поражениями (дефектами)...

Особенности массовой коммуникации Развитие средств связи и информации привело к возникновению явления массовой коммуникации...

Плейотропное действие генов. Примеры. Плейотропное действие генов - это зависимость нескольких признаков от одного гена, то есть множественное действие одного гена...

Методика обучения письму и письменной речи на иностранном языке в средней школе. Различают письмо и письменную речь. Письмо – объект овладения графической и орфографической системами иностранного языка для фиксации языкового и речевого материала...

Классификация холодных блюд и закусок. Урок №2 Тема: Холодные блюда и закуски. Значение холодных блюд и закусок. Классификация холодных блюд и закусок. Кулинарная обработка продуктов...

Studopedia.info - Студопедия - 2014-2025 год . (0.011 сек.) русская версия | украинская версия