mirror of
https://github.com/OpenMP/Examples.git
synced 2025-04-07 23:22:11 +01:00
24 lines
683 B
Fortran
24 lines
683 B
Fortran
! @@name: tasking.2f
|
|
! @@type: F-free
|
|
! @@compilable: yes
|
|
! @@linkable: no
|
|
! @@expect: success
|
|
RECURSIVE SUBROUTINE traverse ( P )
|
|
TYPE Node
|
|
TYPE(Node), POINTER :: left, right
|
|
END TYPE Node
|
|
TYPE(Node) :: P
|
|
IF (associated(P%left)) THEN
|
|
!$OMP TASK ! P is firstprivate by default
|
|
CALL traverse(P%left)
|
|
!$OMP END TASK
|
|
ENDIF
|
|
IF (associated(P%right)) THEN
|
|
!$OMP TASK ! P is firstprivate by default
|
|
CALL traverse(P%right)
|
|
!$OMP END TASK
|
|
ENDIF
|
|
!$OMP TASKWAIT
|
|
CALL process ( P )
|
|
END SUBROUTINE
|