1program test
2    use omp_lib
3    implicit none
4    integer(omp_event_handle_kind) :: oevent, ievent
5    integer :: i
6    integer, allocatable :: temp(:)
7    ALLOCATE(temp(5))
8
9    !$omp parallel num_threads(3)
10    !$omp single
11    DO i=1,5
12    !$omp task firstprivate(i) firstprivate(temp)  detach(oevent)
13          temp(:) = 0;
14          temp(1) = -1;
15          !print *,temp
16          call omp_fulfill_event(oevent)
17    !$omp end task
18    ENDDO
19    !$omp taskwait
20    !$omp end single
21    !$omp end parallel
22end program
23