`ATOMIC_FETCH_OR` — 이전 값을 가져오며 원자적 비트 OR

ATOMIC_FETCH_OR — 이전 값을 가져오며 원자적 비트 OR

비트 OR을 원자적으로 수행하면서 그전 값을 함께 알고 싶을 때 atomic_fetch_or를 써요. ATOM의 현재 값을 OLD에 저장하고, ATOMVALUE와의 비트 OR 결과로 바꾸는 작업을 한 번에 처리해요.

출처: gfortran 문서 — ATOMIC_FETCH_OR

본문

시그니처

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

설명

ATOMIC_FETCH_OR(ATOM, VALUE, OLD)ATOM의 값을 OLD에 원자적으로 저장하고, ATOMVALUE 사이의 비트 OR 결과로 ATOM을 정의해요.

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_fetch_or (atom[1], int(b'10100011101'), old)
end program atomic

이 예제는 atom[1]의 원래 값을 old에 담고, atom[1]int(b'10100011101')(=이진수 10100011101)과의 비트 OR 결과로 바꿔요.

표준

TS 18508 이상

함께 보기