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

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

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





}

Одномоментно, критическую секцию может выполнять только одна нить из всех нитей с данным именем. Если критическая секция уже выполняется какой-либо нитью 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. Нарушение авторских прав; Мы поможем в написании вашей работы!




Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...


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


Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...


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

Постинъекционные осложнения, оказать необходимую помощь пациенту I.ОСЛОЖНЕНИЕ: Инфильтрат (уплотнение). II.ПРИЗНАКИ ОСЛОЖНЕНИЯ: Уплотнение...

Приготовление дезинфицирующего рабочего раствора хлорамина Задача: рассчитать необходимое количество порошка хлорамина для приготовления 5-ти литров 3% раствора...

Дезинфекция предметов ухода, инструментов однократного и многократного использования   Дезинфекция изделий медицинского назначения проводится с целью уничтожения патогенных и условно-патогенных микроорганизмов - вирусов (в т...

Почему важны муниципальные выборы? Туристическая фирма оставляет за собой право, в случае причин непреодолимого характера, вносить некоторые изменения в программу тура без уменьшения общего объема и качества услуг, в том числе предоставлять замену отеля на равнозначный...

Тема 2: Анатомо-топографическое строение полостей зубов верхней и нижней челюстей. Полость зуба — это сложная система разветвлений, имеющая разнообразную конфигурацию...

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

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