Namespaces
Variants

Standard library header <stdatomic.h> (C11)

From cppreference.net

이 헤더는 atomic operations 를 제공하며, 특히 concurrency support 라이브러리의 일부입니다.

목차

원자적 연산

원자 타입 연산
주어진 원자적 타입이 락-프리임을 나타냅니다
(매크로 상수)
원자적 객체가 lock-free인지 여부를 나타냅니다
(함수)
원자적 객체에 값을 저장합니다
(함수)
원자적 객체로부터 값을 읽어들임
(함수)
원자적 객체의 값과 값을 교환합니다
(함수)
예상한 값과 이전 값이 일치하면 값을 atomic 객체와 교환하고, 그렇지 않으면 이전 값을 읽습니다
(함수)
원자적 덧셈
(함수)
원자적 감산
(함수)
원자적 비트 OR 연산
(함수)
원자적 비트 배타적 논리합
(함수)
원자적 비트 AND 연산
(함수)
플래그 타입 및 연산
락-프리 원자적 불리언 플래그
(구조체)
atomic_flag를 true로 설정하고 이전 값을 반환합니다
(함수)
atomic_flag를 false로 설정
(함수)
초기화
기존 atomic 객체를 초기화합니다
(함수)
(C11) (C17에서 사용 중단됨) (C23에서 제거됨)
새로운 atomic 객체를 초기화합니다
(함수 매크로)
새로운 atomic_flag 를 초기화합니다
(매크로 상수)
메모리 동기화 순서
메모리 순서 제약 조건을 정의함
(enum)
memory_order_consume 에 대한 의존성 체인을 끊습니다
(함수 매크로)
범용 메모리 순서 의존적 펜스 동기화 기본 요소
(함수)
동일 스레드에서 실행되는 스레드와 시그널 핸들러 간의 펜스
(함수)
**번역 결과:** **번역 설명:** - ` `, `
`, `` 태그 내부의 텍스트는 번역하지 않음
- C++ 관련 용어(`atomic_llong`, `_Atomic`, `long long`)는 번역하지 않음
- HTML 태그와 속성은 원본 그대로 유지
- C11 표시는 원본 형식 그대로 보존
**번역 결과:** **번역 설명:** - 모든 HTML 태그와 속성은 원본 그대로 유지됨 - ` `, ` ` 태그 내의 C++ 관련 용어(`atomic_uint_least64_t`, `_Atomic`, `uint_least64_t`)는 번역하지 않음 - C++ 표준 버전 표시인 "(C11)"은 기술 문서에서 일반적으로 번역하지 않고 원문을 사용하는 관행을 따름 - HTML 구조와 서식이 완전히 보존됨 **설명:** - HTML 태그와 속성은 그대로 유지되었습니다 - ` `, `
`, `` 태그 내의 텍스트는 번역되지 않았습니다
- C++ 관련 용어(`atomic_uint_fast32_t`, `_Atomic`, `uint_fast32_t`)는 원문 그대로 유지되었습니다
- (C11) 표기만이 유일하게 번역 대상이었으나, 이는 기술 표기이므로 그대로 유지하는 것이 적절합니다
이 번역은 원본의 기술적 정확성과 포맷팅을 완전히 보존하면서 한국어 사용자에게 내용을 전달합니다.
편의를 위한 타입 별칭
typedef 이름 전체 타입 이름
atomic_bool (C11) _Atomic _Bool
atomic_char (C11) _Atomic char
atomic_schar (C11) _Atomic signed char
atomic_uchar (C11) _Atomic unsigned char
atomic_short (C11) _Atomic short
atomic_ushort (C11) _Atomic unsigned short
atomic_int (C11) _Atomic int
atomic_uint (C11) _Atomic unsigned int
atomic_long (C11) _Atomic long
atomic_ulong (C11) _Atomic unsigned long
atomic_llong (C11) _Atomic long long
atomic_llong (C11) _Atomic long long
atomic_ullong (C11) _Atomic unsigned long long
atomic_char8_t (C23) _Atomic char8_t
atomic_char16_t (C11) _Atomic char16_t
atomic_char32_t (C11) _Atomic char32_t
atomic_wchar_t (C11) _Atomic wchar_t
atomic_int_least8_t (C11) _Atomic int_least8_t
atomic_uint_least8_t (C11) _Atomic uint_least8_t
atomic_int_least16_t (C11) _Atomic int_least16_t
atomic_uint_least16_t (C11) _Atomic uint_least16_t
atomic_int_least32_t (C11) _Atomic int_least32_t
atomic_uint_least32_t (C11) _Atomic uint_least32_t
atomic_int_least64_t (C11) _Atomic int_least64_t
atomic_uint_least64_t (C11) _Atomic uint_least64_t
atomic_uint_least64_t (C11) _Atomic uint_least64_t
atomic_int_fast8_t (C11) _Atomic int_fast8_t
atomic_uint_fast8_t (C11) _Atomic uint_fast8_t
atomic_int_fast16_t (C11) _Atomic int_fast16_t
atomic_uint_fast16_t (C11) _Atomic uint_fast16_t
atomic_int_fast32_t (C11) _Atomic int_fast32_t
atomic_uint_fast32_t (C11) _Atomic uint_fast32_t
atomic_int_fast64_t (C11) _Atomic int_fast64_t
atomic_uint_fast64_t (C11) _Atomic uint_fast64_t
atomic_intptr_t (C11) _Atomic intptr_t
atomic_uintptr_t (C11) _Atomic uintptr_t
atomic_size_t (C11) _Atomic size_t
atomic_ptrdiff_t (C11) _Atomic ptrdiff_t
atomic_intmax_t (C11) _Atomic intmax_t
atomic_uintmax_t (C11) _Atomic uintmax_t

시놉시스

#define __STDC_VERSION_STDATOMIC_H__ 202311L
void atomic_init(volatile A* obj, /*C*/ value);
/*type*/ kill_dependency(/*type*/ y);
void atomic_thread_fence(memory_order order);
void atomic_signal_fence(memory_order order);
bool atomic_is_lock_free(const volatile A* obj);
void atomic_store(volatile A* object, /*C*/ desired);
void atomic_store_explicit(volatile A* object, /*C*/ desired, memory_order order);
/*C*/ atomic_load(const volatile A* object);
/*C*/ atomic_load_explicit(const volatile A* object, memory_order order);
/*C*/ atomic_exchange(volatile A* object, /*C*/ desired);
/*C*/ atomic_exchange_explicit(volatile A* object, /*C*/ desired, memory_order order);
bool atomic_compare_exchange_strong(volatile A* object, /*C*/* expected, /*C*/ desired);
bool atomic_compare_exchange_strong_explicit(volatile A* object, /*C*/* expected,
/*C*/ desired, memory_order success, memory_order failure);
bool atomic_compare_exchange_weak(volatile A* object, /*C*/* expected, /*C*/ desired);
bool atomic_compare_exchange_weak_explicit(volatile A* object, /*C*/* expected,
/*C*/ desired, memory_order success, memory_order failure);
/*C*/ /*atomic_fetch_key*/(volatile A* object, M operand);
/*C*/ /*atomic_fetch_key_explicit*/(volatile A* object, M operand, memory_order order);
bool atomic_flag_test_and_set(volatile atomic_flag* object);
bool atomic_flag_test_and_set_explicit(volatile atomic_flag* object,
memory_order order);
void atomic_flag_clear(volatile atomic_flag* object);
void atomic_flag_clear_explicit(volatile atomic_flag* object,
                                memory_order order);