OpenMP-Examples/sources/Example_mem_model.1f.f
2015-01-13 11:38:24 -08:00

33 lines
677 B
Fortran

! @@name: mem_model.1f
! @@type: F-free
! @@compilable: yes
! @@linkable: yes
! @@expect: rt-error
PROGRAM MEMMODEL
INCLUDE "omp_lib.h" ! or USE OMP_LIB
INTEGER X
X = 2
!$OMP PARALLEL NUM_THREADS(2) SHARED(X)
IF (OMP_GET_THREAD_NUM() .EQ. 0) THEN
X = 5
ELSE
! PRINT 1: The following read of x has a race
PRINT *,"1: THREAD# ", OMP_GET_THREAD_NUM(), "X = ", X
ENDIF
!$OMP BARRIER
IF (OMP_GET_THREAD_NUM() .EQ. 0) THEN
! PRINT 2
PRINT *,"2: THREAD# ", OMP_GET_THREAD_NUM(), "X = ", X
ELSE
! PRINT 3
PRINT *,"3: THREAD# ", OMP_GET_THREAD_NUM(), "X = ", X
ENDIF
!$OMP END PARALLEL
END PROGRAM MEMMODEL