Namespaces
Variants

atomic_init

From cppreference.net
헤더 파일에 정의됨 <stdatomic.h>
void atomic_init ( volatile A * obj, C desired ) ;
(C11부터)

기본 생성된 원자 객체 obj 를 값 desired 로 초기화합니다. 이 함수는 원자적이지 않습니다: 다른 스레드에서의 동시 접근(원자 연산을 통한 경우에도)은 데이터 경쟁(data race)입니다.

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

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

목차

매개변수

obj - 초기화할 원자 객체에 대한 포인터
desired - 원자 객체를 초기화하는 데 사용할 값

반환값

(없음)

참고 사항

atomic_init 는 동적으로 할당된 atomic 객체를 초기화하는 유일한 방법입니다. 예를 들어:

_Atomic int *p = malloc(sizeof(_Atomic int));
atomic_init(p, 42);

참고문헌

  • C23 표준 (ISO/IEC 9899:2024):
  • 7.17.2.2 The atomic_init generic function (p: TBD)
  • C17 표준 (ISO/IEC 9899:2018):
  • 7.17.2.2 atomic_init 제네릭 함수 (p: 201)
  • C11 표준 (ISO/IEC 9899:2011):
  • 7.17.2.2 atomic_init 제네릭 함수 (p: 274-275)

참고 항목

(C11) (C17에서 사용 중단됨) (C23에서 제거됨)
새로운 atomic 객체를 초기화합니다
(함수 매크로)
C++ documentation for atomic_init