`ATOMIC_FETCH_ADD` — 이전 값을 가져오며 원자적으로 더하기

ATOMIC_FETCH_ADD — 이전 값을 가져오며 원자적으로 더하기

덧셈을 원자적으로 하되, 더하기 전의 원래 값도 함께 알고 싶을 때가 있어요. atomic_fetch_add는 변수의 현재 값을 먼저 읽어서 따로 저장하고, 그다음 값을 더하는 작업을 한 번에 처리해요.

출처: gfortran 문서 — ATOMIC_FETCH_ADD

본문

시그니처

CALL ATOMIC_FETCH_ADD (ATOM, VALUE, OLD [, STAT])

설명

ATOMIC_FETCH_ADD(ATOM, VALUE, OLD)ATOM의 값을 OLD에 원자적으로 저장하고, ATOMVALUE를 더해요.

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

분류

원자적 서브루틴(Atomic subroutine)

인자

  • ATOMATOMIC_INT_KIND 종류의 정수형 스칼라 코어레이 또는 coindexed 변수.
  • VALUEATOM과 같은 타입의 스칼라. 종류가 다르면 ATOM의 종류로 변환돼요.
  • OLDATOM과 같은 타입·종류의 스칼라.
  • STAT (선택) — 기본 종류 정수형 스칼라 변수.

예제

program atomic
  use iso_fortran_env
  integer(atomic_int_kind) :: atom[*], old
  call atomic_add (atom[1], this_image(), old)
end program atomic

예제에 나온 atomic_add 호출은 atom[1]의 현재 값을 old에 담고, atom[1]this_image()를 더해요.

표준

TS 18508 이상

함께 보기