Namespaces
Variants

atomic_fetch_or, atomic_fetch_or_explicit

From cppreference.net
헤더 파일에 정의됨 <stdatomic.h>
C atomic_fetch_or ( volatile A * obj, M arg ) ;
(1) (C11 이후)
C atomic_fetch_or_explicit ( volatile A * obj, M arg, memory_order order ) ;
(2) (C11 이후)

obj 가 가리키는 값을 obj 의 이전 값과 arg 의 비트 OR 연산 결과로 원자적으로 교체하고, 이전에 obj 가 보유하던 값을 반환합니다. 이 연산은 읽기-수정-쓰기 작업입니다. 첫 번째 버전은 메모리 접근을 memory_order_seq_cst 에 따라 정렬하며, 두 번째 버전은 메모리 접근을 order 에 따라 정렬합니다.

이것은 모든 generic function 에 대해 정의된 atomic object types A 입니다. 인자는 volatile atomic 타입에 대한 포인터로, 비-volatile과 volatile (예: 메모리 매핑된 I/O) atomic 객체들의 주소를 모두 수용하기 위함이며, volatile atomic 객체에 이 연산을 적용할 때 volatile 의미론이 유지됩니다. M A 가 atomic 정수 타입일 경우 A 에 해당하는 비-atomic 타입이거나, A 가 atomic 포인터 타입일 경우 ptrdiff_t 입니다.

제네릭 함수의 이름이 매크로인지 외부 링크를 가진 식별자로 선언되었는지는 명시되지 않습니다. 실제 함수에 접근하기 위해 매크로 정의를 억제하는 경우(예: ( atomic_fetch_or ) ( ... ) 와 같이 괄호로 묶은 경우), 또는 프로그램이 제네릭 함수 이름으로 외부 식별자를 정의하는 경우, 그 동작은 정의되지 않습니다.

목차

매개변수

obj - 수정할 atomic 객체에 대한 포인터
arg - atomic 객체에 저장된 값에 비트 OR 연산을 수행할 값
order - 이 연산에 대한 메모리 동기화 순서: 모든 값이 허용됨

반환값

원자 객체 obj 가 이전에 보유하고 있던 값.

참고문헌

  • C17 표준 (ISO/IEC 9899:2018):
  • 7.17.7.5 atomic_fetch 및 modify 일반 함수 (p: 208)
  • C11 표준 (ISO/IEC 9899:2011):
  • 7.17.7.5 atomic_fetch 및 modify 일반 함수 (p: 284-285)

참고 항목

원자적 비트 AND
(함수)
원자적 비트 배타적 OR
(함수)
C++ 문서 for atomic_fetch_or , atomic_fetch_or_explicit