2.0 omp single nowait omp critical,omp atomic INTEGER FUNCTION single_nowait() IMPLICIT NONE INTEGER result, total_iterations, my_iterations,i INCLUDE "omp_testsuite.f" INTEGER nr_iterations COMMON /orphvars/ nr_iterations result=0 nr_iterations=0 total_iterations=0 my_iterations=0 !$omp parallel private(i) DO i=0, LOOPCOUNT -1 !$omp single !$omp atomic nr_iterations = nr_iterations + 1 !$omp end single nowait END DO !$omp end parallel !$omp parallel private(i,my_iterations) my_iterations = 0 DO i=0, LOOPCOUNT -1 !$omp single my_iterations = my_iterations + 1 !$omp end single nowait END DO !$omp critical total_iterations = total_iterations + my_iterations !$omp end critical !$omp end parallel IF ( nr_iterations .EQ. LOOPCOUNT .AND. & total_iterations .EQ. LOOPCOUNT ) THEN = 1 ELSE = 0 END IF END FUNCTION