`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_QUERYEVENT 변수에 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 — 배열 이벤트 제어
  • 코어레이 동기화 문법과 함께 보면 좋아요.