2.6.3 Директива barrier
барьер директива синхронизировать все потоки в рабочей группе. Сталкивано каждый поток в рабочей группе ожидает, пока все остальные не достигнут этот пункт. Синтаксис барьер директива выглядит следующим образом:
#pragma omp barrier new-line
После того как все потоки в рабочей группе сталкивались барьера каждый поток в рабочей группе начинает выполняться выписки после директивы барьера параллельно. Обратите внимание, что поскольку барьер директива не имеет выписку языка c, как часть своего синтаксиса, существуют некоторые ограничения на его месте в рамках программы. См. Приложение C# для формального грамматики. В приведенном ниже примере показаны эти ограничения.
/* ERROR - The barrier directive cannot be the immediate
* substatement of an if statement
*/
if (x!=0)
#pragma omp barrier
...
/* OK - The barrier directive is enclosed in a
* compound statement.
*/
if (x!=0) {
#pragma omp barrier
}