`EVENT_QUERY` — 배열 이벤트가 발생했는지 조회
EVENT_QUERY — 배열 이벤트가 발생했는지 조회
코어레이(coarray) 이벤트에 몇 개의 이벤트가 쌓여 있는지 물어봐야 할 때가 있어요. 이벤트 발생 여부를 조회해 주는 내장 EVENT_QUERY가 그 역할을 해요.
출처: The GNU Fortran Compiler — EVENT_QUERY (Query whether a coarray event has occurred)
본문
시그니처
CALL EVENT_QUERY (EVENT, COUNT [, STAT])
설명
EVENT_QUERY는 EVENT 변수에 post 되어 아직 EVENT WAIT로 제거되지 않은 이벤트의 개수를 COUNT에 넣어줘요. STAT이 주어졌을 때 호출이 성공하면 STAT에 0을 넣고, 실패하면 양수 값을 넣으면서 COUNT에는 -1을 넣어요.
클래스
Subroutine (서브루틴)
인자
EVENT— (intent(IN))ISO_FORTRAN_ENV에 정의된EVENT_TYPE타입의 스칼라. coindexed이면 안 돼요.COUNT— (intent(out)) 기본 정수 최소 정밀도의 스칼라 정수.STAT— (선택) 기본 kind 정수 스칼라 변수.
예제
program atomic
use iso_fortran_env
implicit none
type(event_type) :: event_value_has_been_set[*]
integer :: cnt
if (this_image() == 1) then
call event_query (event_value_has_been_set, cnt)
if (cnt > 0) write(*,*) "Value has been set"
elseif (this_image() == 2) then
event post (event_value_has_been_set[1])
end if
end program atomic
표준
TS 18508 이후.
더 알아보기
EVENT POST/EVENT WAIT— 배열 이벤트 제어- 코어레이 동기화 문법과 함께 보면 좋아요.