Составители:
Рубрика:
с переменной I, объявленной как PRIVATE, вывод на печать анало-
гичен. Однако, между двумя этими примерами имеется существен-
ная разница: без критической секции работа идет параллельно, а с
критической секцией — последовательно.
Вывод: критическими секциями нужно пользоваться осторож-
но, ибо их применение приводит к последовательному (а не к па-
раллельному) выполнению соответствующих участков программы.
§ 10. Другие возможности Open MP
10.1. Синхронизация
Для синхронизации работы нитей в Open MP предусмотрено
много возможностей; простейшая из них — использование дирек-
тивы !$OMP BARIER.
Нити, дошедшие до этой директивы, останавливаются, поджи-
дая остальные нити; после достижения этой директивы всеми ни-
тями работа продолжается.
10.2. Участок нити-мастера
Фрагмент программы, который должна выполнить лишь ос-
новная нить, определяется директивами
!$OMP MASTER
<участок программы для нити-мастера>
!$OMP END MASTER
Остальные нити пропускают этот участок программы; синхрониза-
ция по умолчанию здесь не проводится.
10.3. Последовательное выполнение
отдельного оператора
Директива !$OMP ATOMIC относится к непосредственно идуще-
му за ней оператору, и её применение приводит к последователь-
ному выполнению этого оператора всеми нитями. Например, если
переменная SUM описана как общая, то при суммировании примене-
ние в программе оператора SUM=SUM+expr может привести к непра-
вильному результату: например, могут быть пропущены некоторые
145
Страницы
- « первая
- ‹ предыдущая
- …
- 142
- 143
- 144
- 145
- 146
- …
- следующая ›
- последняя »
