<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
이름 |
설명 |
---|---|
저장 된 값에서 원자 연산을 수행 하는 개체를 설명 합니다. |
|
원자적으로 설정 하 고 해제 하는 개체에 설명 된 bool 플래그입니다. |
열거형
이름 |
설명 |
---|---|
동기화 작업에서 메모리 위치에 대 한 기호화 된 이름을 제공 합니다.이러한 작업이 한 스레드에 할당에서 다른 표시 됩니다 어떻게 영향을 줍니다. |
함수
다음 목록에 끝나지 않는 함수 _explicit 의 의미는 해당 _explicit암시적 도구 들을 제외 하 고 memory_order 인수를 memory_order_seq_cst.
이름 |
설명 |
---|---|
수행 된 원자 비교 및 교환 작업을 합니다. |
|
수행 된 원자 비교 및 교환 작업을 합니다. |
|
수행 된 약한 원자 비교 및 교환 작업. |
|
수행 된 약한 원자 비교 및 교환 작업. |
|
저장 된 값을 대체합니다. |
|
저장 된 값을 대체합니다. |
|
기존 저장 된 값을 지정 된 값을 추가합니다. |
|
기존 저장 된 값을 지정 된 값을 추가합니다. |
|
연산을 수행 and 에 지정 된 값과 기존 저장 된 값입니다. |
|
연산을 수행 and 에 지정 된 값과 기존 저장 된 값입니다. |
|
연산을 수행 or 에 지정 된 값과 기존 저장 된 값입니다. |
|
연산을 수행 or 에 지정 된 값과 기존 저장 된 값입니다. |
|
기존 저장 된 값에서 지정 된 값을 뺍니다. |
|
기존 저장 된 값에서 지정 된 값을 뺍니다. |
|
연산을 수행 exclusive or 에 지정 된 값과 기존 저장 된 값입니다. |
|
연산을 수행 exclusive or 에 지정 된 값과 기존 저장 된 값입니다. |
|
플래그 설정 된 atomic_flag 개체 false. |
|
플래그 설정 된 atomic_flag 개체 false. |
|
플래그 설정 된 atomic_flag 개체 true. |
|
플래그 설정 된 atomic_flag 개체 true. |
|
저장 된 값을 설정 된 atomic 개체입니다. |
|
원자 연산을 지정 된 개체에 있는지 여부를 지정 잠금 해제 합니다. |
|
원자적으로 값을 검색 합니다. |
|
원자적으로 값을 검색 합니다. |
|
역할은 담 주문 요구 사항 사이의 울타리를 호출에서 스레드는 메모리 된 동일한 스레드에서 실행 신호 처리기를 설정 합니다. |
|
원자적으로 값을 저장 합니다. |
|
원자적으로 값을 저장 합니다. |
|
역할은 담 메모리 요구 사항이 다른 울타리를 기준으로 순서를 설정 합니다. |
|
가능한 종속성 체인이 끊어집니다. |