8 INCLUDE "omp_lib.h" ! or USE OMP_LIB
9 INTEGER(OMP_LOCK_KIND
) LCK
11 CALL OMP_INIT_LOCK(LCK
)
12 !$OMP PARALLEL SHARED(LCK) PRIVATE(ID)
13 ID
= OMP_GET_THREAD_NUM()
14 CALL OMP_SET_LOCK(LCK
)
15 PRINT *, "My thread id is ", ID
16 CALL OMP_UNSET_LOCK(LCK
)
17 DO WHILE (.NOT
. OMP_TEST_LOCK(LCK
))
18 CALL SKIP(ID
) ! We do not yet have the lock
19 ! so we must do something else
21 CALL WORK(ID
) ! We now have the lock
23 CALL OMP_UNSET_LOCK( LCK
)
25 CALL OMP_DESTROY_LOCK( LCK
)