`ATOMIC_DEFINE` — 변수를 원자적으로 설정
ATOMIC_DEFINE — 변수를 원자적으로 설정
여러 이미지가 공유하는 코어레이 변수에 값을 넣을 때, 중간에 다른 작업이 끼어드는 걸 막고 싶다면 atomic_define을 써요. 값을 넣는 동작 자체를 원자적으로 만들어서, 넣는 도중에는 다른 이미지가 그 변수를 못 건드리게 해요.
본문
시그니처
CALL ATOMIC_DEFINE (ATOM, VALUE [, STAT])
설명
ATOMIC_DEFINE(ATOM, VALUE)는 변수 ATOM을 VALUE로 원자적으로 정의해요.
STAT가 주어지고 호출이 성공하면 STAT에 0을 넣어요. 호출이 실패하면 양수 값을 넣는데, coindexed ATOM의 경우 원격 이미지가 멈췄다면 ISO_FORTRAN_ENV의 STAT_STOPPED_IMAGE 값, 실패했다면 STAT_FAILED_IMAGE 값을 넣어요.
분류
원자적 서브루틴(Atomic subroutine)
인자
ATOM—ATOMIC_INT_KIND종류의 정수형이거나ATOMIC_LOGICAL_KIND종류의 논리형인 스칼라 코어레이 또는 coindexed 변수.VALUE—ATOM과 같은 타입의 스칼라. 종류가 다르면ATOM의 종류로 변환돼요.STAT(선택) — 기본 종류 정수형 스칼라 변수.
예제
program atomic
use iso_fortran_env
integer(atomic_int_kind) :: atom[*]
call atomic_define (atom[1], this_image())
end program atomic
이 예제는 atom[1]에 현재 이미지 번호(this_image())를 원자적으로 넣어요.
표준
Fortran 2008 이상; STAT를 쓰면 TS 18508 이상