subroutine random_wait(i) integer omp_get_thread_num, omp_get_num_threads j=mod(irand(),10) write(*,'(AI2AI2AI2AI2)') 'begin ',i,' - ',j,' sec, thread ', c omp_get_thread_num(), '/', omp_get_num_threads() call sleep(j) write(*,'(AI2AI2AI2AI2)') 'end ',i,' - ',j,' sec, thread ', c omp_get_thread_num(), '/', omp_get_num_threads() end program thread_test integer omp_get_thread_num, omp_get_num_threads write(*,*) 'Single Thread' call sleep(4) !$OMP PARALLEL NUM_THREADS(8) write(*,'(AI2AI2)') 'Multi Thread ', c omp_get_thread_num(),'/',omp_get_num_threads() !$OMP DO SCHEDULE(DYNAMIC) do i=1,20 call random_wait(i) end do !$OMP END DO NOWAIT write(*,'(AI2)') 'finish', omp_get_thread_num() !$OMP BARRIER !$OMP MASTER write(*,*) 'Finish' !$OMP END MASTER !$OMP END PARALLEL end