15.2.3.3 BARRIER Directive (TU*X only)

The BARRIER directive synchronizes all the threads in a team. It causes each thread to wait until all of the other threads in the team have reached the barrier.

The BARRIER directive takes the following form:

c$OMP BARRIER

c
Is one of the following: C (or c), !, or * (see Section 15.2.1).

The BARRIER directive must be encountered by all threads in a team or by none at all. It must also be encountered in the same order by all threads in a team.

Examples

The directive binding rules call for a BARRIER directive to bind to the closest enclosing PARALLEL directive. In the following example, the BARRIER directive ensures that all threads have executed the first loop and that it is safe to execute the second loop:

  c$OMP PARALLEL
  c$OMP DO PRIVATE(i)
        DO i = 1, 100
          b(i) = i
        END DO
  c$OMP BARRIER
  c$OMP DO PRIVATE(i)
        DO i = 1, 100
          a(i) = b(101-i)
        END DO
  c$OMP END PARALLEL

For More Information:

For details about directive binding, see Section 15.2.3.15.


Previous Page Next Page Table of Contents