다음을 통해 공유


<atomic>

클래스 및 원자 연산을 지 원하는 형식을 만드는 데 사용할 템플릿 클래스를 정의 합니다.

#include <atomic>

설명

[!참고]

사용 하 여 컴파일되는 코드에 /clr 또는 /clr:pure,이 헤더를 차단 합니다.

원자 단위 연산에는 두 개의 도움이 키 속성 여러 스레드 사용 하 여 올바르게 뮤텍스 잠금을 사용 하지 않고 개체를 조작할 수 있습니다.

  • 원자 단위 연산 나눌 수 없기 때문에 다른 스레드에서 동일한 개체에 두 번째 원자 연산을 앞 또는 뒤에 첫 번째 원자 단위 연산 객체의 상태를 얻을 수 있습니다.

  • 따라 해당 memory_order 인수, 원자 단위 연산 설정 가시성에 대 한 요구의 다른 원자 단위 작업의 효과 같은 스레드에서 주문 합니다.따라서 순서 지정 요구 사항을 위반 하는 컴파일러 최적화 기능을 제한 합니다.

일부 플랫폼에서는를 사용 하지 않고 일부 원자 연산을 효율적으로 구현 가능한 수 있습니다 mutex 잠금.Atomic 형식인 잠금 해제 없는 원자 작업 형식에는 잠금을 사용 하는 경우.

클래스 atomic_flag 보유 하는 최소 원자 형식 제공은 bool 플래그입니다.항상 그 작업은 잠금 해제 됩니다.

템플릿 클래스 atomic<Ty> 인수 형식의 개체를 저장 합니다. Ty 해당 저장 된 값에 대 한 원자적 액세스를 제공 하 고 있습니다.사용 하 여 복사할 수 있습니다 모든 종류를 사용 하 여 인스턴스화할 수 있습니다 memcpy 를 사용 하 여 같은지 여부를 테스트 하 고 memcmp.특히 이러한 요구 사항을 충족 하는 사용자 정의 형식을 사용 하 고 대부분의 경우, 부동 소수점 형식을 함께 사용 하 여 수 있습니다.

템플릿 집합 부분 특수화에 대 한 포인터와 정수 계열 형식에 대해 특수화도.이러한 특수화를 통해 기본 템플릿에서 사용할 수 있는 추가 작업을 제공 합니다.

포인터가 특수화

atomic<Ty *> 부분 특수화 모든 포인터 형식에 적용 됩니다.두 포인터 산술 연산을 위한 메서드를 제공합니다.

정수 계열 특수화

atomic<integral> 특수화 모든 정수 계열 형식에 적용 됩니다.기본 서식 파일을 통해 사용할 수 있는 추가 작업을 제공 합니다.

atomic<integral> 형식에서 사용할 수 있는 해당 매크로는 if directive 컴파일 타임에 해당 형식에 대 한 작업 인지 여부를 확인 하려면 잠금 해제 합니다.매크로의 값이 0 이면 작업 형식에는 잠금을 해제 합니다.잠금 해제 및 런타임 값이 1 이면 작업이 될 수 있습니다 체크가 필요 합니다.값이 2 이면 작업은 잠금 해제 됩니다.함수를 사용 하면 atomic_is_lock_free 런타임에 형식에 대 한 작업 인지 확인 하기 위해 잠금을 해제 합니다.

각 정수 계열 형식에 대 한 있을 해당 정수 계열 형식의 개체를 관리 하는 해당 명명 된 원자 형식입니다.각 atomic_integral 형식에는 동일한 멤버 함수 집합으로 해당 인스턴스화를 atomic<Ty> 모든 멤버가 아닌 원자 함수에 전달 될 수 있습니다.

atomic_integral 형식

정수 계열 형식

atomic_is_lock_free매크로

atomic_char

char

ATOMIC_CHAR_LOCK_FREE

atomic_schar

signed char

ATOMIC_CHAR_LOCK_FREE

atomic_uchar

unsigned char

ATOMIC_CHAR_LOCK_FREE

atomic_char16_t

char16_t

ATOMIC_CHAR16_T_LOCK_FREE

atomic_char32_t

char32_t

ATOMIC_CHAR32_T_LOCK_FREE

atomic_wchar_t

wchar_t

ATOMIC_WCHAR_T_LOCK_FREE

atomic_short

short

ATOMIC_SHORT_LOCK_FREE

atomic_ushort

unsigned short

ATOMIC_SHORT_LOCK_FREE

atomic_int

int

ATOMIC_INT_LOCK_FREE

atomic_uint

unsigned int

ATOMIC_INT_LOCK_FREE

atomic_long

long

ATOMIC_LONG_LOCK_FREE

atomic_ulong

unsigned long

ATOMIC_LONG_LOCK_FREE

atomic_llong

long long

ATOMIC_LLONG_LOCK_FREE

atomic_ullong

unsigned long long

ATOMIC_LLONG_LOCK_FREE

Typedef 이름은 <inttypes.h> 헤더에 정의 된 형식 중 일부에 대 한 원자 템플릿 특수화에 대 한 존재 합니다.

원자성 유형

Typedef 이름

atomic_int8_t

atomic<int8_t>

atomic_uint8_t

atomic<uint8_t>

atomic_int16_t

atomic<int16_t>

atomic_uint16_t

atomic<uint16_t>

atomic_int32_t

atomic<int32_t>

atomic_uint32_t

atomic<uint32_t>

atomic_int64_t

atomic<int64_t>

atomic_uint64_t

atomic<uint64_t>

atomic_int_least8_t

atomic<int_least8_t>

atomic_uint_least8_t

atomic<uint_least8_t>

atomic_int_least16_t

atomic<int_least16_t>

atomic_uint_least16_t

atomic<uint_least16_t>

atomic_int_least32_t

atomic<int_least32_t>

atomic_uint_least32_t

atomic<uint_least32_t>

atomic_int_least64_t

atomic<int_least64_t>

atomic_uint_least64_t

atomic<uint_least64_t>

atomic_int_fast8_t

atomic<int_fast8_t>

atomic_uint_fast8_t

atomic<uint_fast8_t>

atomic_int_fast16_t

atomic<int_fast16_t>

atomic_uint_fast16_

atomic<uint_fast16_t>

atomic_int_fast32_t

atomic<int_fast32_t>

atomic_uint_fast32_t

atomic<uint_fast32_t>

atomic_int_fast64_t

atomic<int_fast64_t>

atomic_uint_fast64_t

atomic<uint_fast64_t>

atomic_intptr_t

atomic<intptr_t>

atomic_uintptr_t

atomic<uintptr_t>

atomic_size_t

atomic<size_t>

atomic_ptrdiff_t

atomic<ptrdiff_t>

atomic_intmax_t

atomic<intmax_t>

atomic_uintmax_t

atomic<uintmax_t>

Structs

이름

설명

원자 구조

저장 된 값에서 원자 연산을 수행 하는 개체를 설명 합니다.

atomic_flag 구조

원자적으로 설정 하 고 해제 하는 개체에 설명 된 bool 플래그입니다.

열거형

이름

설명

memory_order 열거형

동기화 작업에서 메모리 위치에 대 한 기호화 된 이름을 제공 합니다.이러한 작업이 한 스레드에 할당에서 다른 표시 됩니다 어떻게 영향을 줍니다.

함수

다음 목록에 끝나지 않는 함수 _explicit 의 의미는 해당 _explicit암시적 도구 들을 제외 하 고 memory_order 인수를 memory_order_seq_cst.

이름

설명

atomic_compare_exchange_strong 함수

수행 된 원자 비교 및 교환 작업을 합니다.

atomic_compare_exchange_strong_explicit 함수

수행 된 원자 비교 및 교환 작업을 합니다.

atomic_compare_exchange_weak 함수

수행 된 약한 원자 비교 및 교환 작업.

atomic_compare_exchange_weak_explicit 함수

수행 된 약한 원자 비교 및 교환 작업.

atomic_exchange 함수

저장 된 값을 대체합니다.

atomic_exchange_explicit 함수

저장 된 값을 대체합니다.

atomic_fetch_add 함수

기존 저장 된 값을 지정 된 값을 추가합니다.

atomic_fetch_add_explicit 함수

기존 저장 된 값을 지정 된 값을 추가합니다.

atomic_fetch_and 함수

연산을 수행 and 에 지정 된 값과 기존 저장 된 값입니다.

atomic_fetch_and_explicit 함수

연산을 수행 and 에 지정 된 값과 기존 저장 된 값입니다.

atomic_fetch_or 함수

연산을 수행 or 에 지정 된 값과 기존 저장 된 값입니다.

atomic_fetch_or_explicit 함수

연산을 수행 or 에 지정 된 값과 기존 저장 된 값입니다.

atomic_fetch_sub 함수

기존 저장 된 값에서 지정 된 값을 뺍니다.

atomic_fetch_sub_explicit 함수

기존 저장 된 값에서 지정 된 값을 뺍니다.

atomic_fetch_xor 함수

연산을 수행 exclusive or 에 지정 된 값과 기존 저장 된 값입니다.

atomic_fetch_xor_explicit 함수

연산을 수행 exclusive or 에 지정 된 값과 기존 저장 된 값입니다.

atomic_flag_clear 함수

플래그 설정 된 atomic_flag 개체 false.

atomic_flag_clear_explicit 함수

플래그 설정 된 atomic_flag 개체 false.

atomic_flag_test_and_set 함수

플래그 설정 된 atomic_flag 개체 true.

atomic_flag_test_and_set_explicit 함수

플래그 설정 된 atomic_flag 개체 true.

atomic_init 함수

저장 된 값을 설정 된 atomic 개체입니다.

atomic_is_lock_free 함수

원자 연산을 지정 된 개체에 있는지 여부를 지정 잠금 해제 합니다.

atomic_load 함수

원자적으로 값을 검색 합니다.

atomic_load_explicit 함수

원자적으로 값을 검색 합니다.

atomic_signal_fence 함수

역할은 담 주문 요구 사항 사이의 울타리를 호출에서 스레드는 메모리 된 동일한 스레드에서 실행 신호 처리기를 설정 합니다.

atomic_store 함수

원자적으로 값을 저장 합니다.

atomic_store_explicit 함수

원자적으로 값을 저장 합니다.

atomic_thread_fence 함수

역할은 담 메모리 요구 사항이 다른 울타리를 기준으로 순서를 설정 합니다.

kill_dependency 함수

가능한 종속성 체인이 끊어집니다.

참고 항목

참조

표준 템플릿 라이브러리

기타 리소스

헤더 파일