mirror of
https://github.com/OpenMP/Examples.git
synced 2025-04-07 23:22:11 +01:00
33 lines
677 B
Fortran
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
|