`ATOMIC_DEFINE` — 변수를 원자적으로 설정

ATOMIC_DEFINE — 변수를 원자적으로 설정

여러 이미지가 공유하는 코어레이 변수에 값을 넣을 때, 중간에 다른 작업이 끼어드는 걸 막고 싶다면 atomic_define을 써요. 값을 넣는 동작 자체를 원자적으로 만들어서, 넣는 도중에는 다른 이미지가 그 변수를 못 건드리게 해요.

출처: gfortran 문서 — ATOMIC_DEFINE

본문

시그니처

CALL ATOMIC_DEFINE (ATOM, VALUE [, STAT])

설명

ATOMIC_DEFINE(ATOM, VALUE)는 변수 ATOMVALUE로 원자적으로 정의해요.

STAT가 주어지고 호출이 성공하면 STAT에 0을 넣어요. 호출이 실패하면 양수 값을 넣는데, coindexed ATOM의 경우 원격 이미지가 멈췄다면 ISO_FORTRAN_ENVSTAT_STOPPED_IMAGE 값, 실패했다면 STAT_FAILED_IMAGE 값을 넣어요.

분류

원자적 서브루틴(Atomic subroutine)

인자

  • ATOMATOMIC_INT_KIND 종류의 정수형이거나 ATOMIC_LOGICAL_KIND 종류의 논리형인 스칼라 코어레이 또는 coindexed 변수.
  • VALUEATOM과 같은 타입의 스칼라. 종류가 다르면 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 이상

함께 보기