Synchronisation
einfache Direktiven (critical sections, barriers) 
Gate-Variablen (critical/ordered sections) 
Synchronisations-Funktionen (lock_gate, unlock_gate)
! Overhead bedenken!
Beispiel für Critical Section
         SUM = 0.0
   C$DIR LOOP_PARALLEL
         DO I = 1, N
            A(I) = FUNC(A(I), I)
   C$DIR    CRITICAL_SECTION        
            SUM = SUM + A(I)
   C$DIR    END_CRITICAL_SECTION  
         ENDDO
Beispiel für Barrier
langsam:
      DO T = 1, MAX
C$DIR LOOP_PARALLEL   
        DO I = 1, N
          B(I) = F1(E,N,I)
        ENDDO
C$DIR   LOOP_PARALLEL   
        DO I = 1, N
          E(I) = F2(B,N,I)
        ENDDO
      ENDDO
schnell:
C$DIR PARALLEL 
      DO T = 1, MAX
C$DIR   LOOP_PARALLEL(DIST)
        DO I = 1, N
          B(I) = F1(E,N,I)
        ENDDO
        RC = WAIT_BARRIER(MY_BARRIER, 
                          N_THREADS)
C$DIR   LOOP_PARALLEL(DIST)   
        DO I = 1, N
          E(I) = F2(B,N,I)
        ENDDO
      ENDDO  
C$DIR END_PARALLEL
Beispiel:
 C$DIR LOOP_PARALLEL(NODES)
       DO I = 1, N  
 C$DIR   LOOP_PARALLEL(THREADS)
         DO J = 1, M
            A(I,J) = B(I,J) + C(I,J)
         ENDDO
       ENDDO
     analog für TASKS und PARALLEL-Bereiche