Поделиться через


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
}