OpenMP-Examples/sources/Example_threadprivate.6.f

31 lines
681 B
Fortran

! @@name: threadprivate.6f
! @@type: F-fixed
! @@compilable: yes
! @@linkable: yes
! @@expect: success
MODULE INC_MODULE_GOOD3
REAL, POINTER :: WORK(:)
SAVE WORK
!$OMP THREADPRIVATE(WORK)
END MODULE INC_MODULE_GOOD3
SUBROUTINE SUB1(N)
USE INC_MODULE_GOOD3
!$OMP PARALLEL PRIVATE(THE_SUM)
ALLOCATE(WORK(N))
CALL SUB2(THE_SUM)
WRITE(*,*)THE_SUM
!$OMP END PARALLEL
END SUBROUTINE SUB1
SUBROUTINE SUB2(THE_SUM)
USE INC_MODULE_GOOD3
WORK(:) = 10
THE_SUM=SUM(WORK)
END SUBROUTINE SUB2
PROGRAM INC_GOOD3
N = 10
CALL SUB1(N)
END PROGRAM INC_GOOD3