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

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

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





}

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




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


ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...


Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...


Логические цифровые микросхемы Более сложные элементы цифровой схемотехники (триггеры, мультиплексоры, декодеры и т.д.) не имеют...

Гносеологический оптимизм, скептицизм, агностицизм.разновидности агностицизма Позицию Агностицизм защищает и критический реализм. Один из главных представителей этого направления...

Функциональные обязанности медсестры отделения реанимации · Медсестра отделения реанимации обязана осуществлять лечебно-профилактический и гигиенический уход за пациентами...

Определение трудоемкости работ и затрат машинного времени На основании ведомости объемов работ по объекту и норм времени ГЭСН составляется ведомость подсчёта трудоёмкости, затрат машинного времени, потребности в конструкциях, изделиях и материалах (табл...

Мелоксикам (Мовалис) Групповая принадлежность · Нестероидное противовоспалительное средство, преимущественно селективный обратимый ингибитор циклооксигеназы (ЦОГ-2)...

Менадиона натрия бисульфит (Викасол) Групповая принадлежность •Синтетический аналог витамина K, жирорастворимый, коагулянт...

Разновидности сальников для насосов и правильный уход за ними   Сальники, используемые в насосном оборудовании, служат для герметизации пространства образованного кожухом и рабочим валом, выходящим через корпус наружу...

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