C ++ 라이브러리-<atomic>
소개
이들은 액세스가 데이터 경합을 일으키지 않는 것으로 보장되는 값을 캡슐화하는 유형이며 서로 다른 스레드 간의 메모리 액세스를 동기화하는 데 사용할 수 있으며 원자 라이브러리는 잠금없는 동시 프로그래밍을 허용하는 세분화 된 원자 작업을위한 구성 요소를 제공합니다. 각 원자 연산은 동일한 객체를 포함하는 다른 원자 연산과 관련하여 나눌 수 없습니다.
원자 유형
Sr. 아니. | 회원 유형 및 정의 |
---|---|
1 | 원자 부울, 적분 및 포인터 유형에 대한 원자 클래스 템플릿 및 전문화 |
C 스타일 원자 유형
다음은 원자 유형이며이 헤더에도 정의되어 있습니다.
기본 적분 유형에 대한 원자 .
이들은 해당하는 전체 전문화의 typedef입니다. 원자 클래스 템플릿 또는 이러한 전문화의 기본 클래스.
너비 기반 적분에 대한 원자 (<cinttypes>).
이들 각각은 기본 적분 유형에 대한 위의 원자 중 하나의 별칭 이거나원자확장 정수 유형 이있는 클래스 템플릿 .
여기서 N 은 8, 16, 32, 64 또는 라이브러리에서 지원하는 기타 유형 너비 중 하나입니다.
포함 된 유형 | 원자 유형 | 기술 |
---|---|---|
bool |
atomic_bool | |
char |
atomic_char | |
signed char |
atomic_schar | |
unsigned char |
atomic_uchar | |
short |
atomic_short | |
unsigned short |
atomic_ushort | |
int |
atomic_int | |
unsigned int |
atomic_uint | |
long |
atomic_long | |
unsigned long |
atomic_ulong | |
long long |
atomic_llong | |
unsigned long long |
atomic_ullong | |
wchar_t |
atomic_wchar_t | |
char16_t |
atomic_char16_t | |
char32_t |
atomic_char32_t | |
intmax_t | atomic_intmax_t | |
uintmax_t | atomic_uintmax_t | |
int_least 엔_t |
atomic_int_least 엔_t |
|
uint_least 엔_t |
atomic_uint_least 엔_t |
|
int_fast 엔_t |
atomic_int_fast 엔_t |
|
uint_fast 엔_t |
atomic_uint_fast 엔_t |
|
intptr_t | atomic_intptr_t | |
uintptr_t | atomic_uintptr_t | |
size_t | atomic_size_t | |
ptrdiff_t | atomic_ptrdiff_t |
원자 유형에 대한 작업
&Sr. 아니. | 운영 및 정의 |
---|---|
1 | atomic_is_lock_free 원자 유형의 작업에 잠금이 없는지 확인하는 데 사용됩니다. |
2 | atomic_store 및 atomic_store_explicit 원자 객체의 값을 원자가 아닌 인수로 자동 대체합니다. |
삼 | atomic_load 및 atomic_load_explicit 원자 객체에 저장된 값을 원자 적으로 얻습니다. |
4 | atomic_exchange 및 atomic_exchange_explicit 원자 객체의 값을 원자가 아닌 인수로 원자 적으로 대체하고 원자의 이전 값을 반환합니다. |
5 | atomic_compare_exchange_weak & atomic_compare_exchange_weak_explicit & atomic_compare_exchange_strong & atomic_compare_exchange_strong_explicit 원자 객체의 값을 비 원자 인수와 원자 적으로 비교하고 같으면 원자 교환을 수행하고 그렇지 않으면 원자 부하를 수행합니다. |
6 | atomic_fetch_add 및 atomic_fetch_add_explicit 원자 객체에 원자가 아닌 값을 추가하고 원자의 이전 값을 얻습니다. |
7 | atomic_fetch_sub 및 atomic_fetch_sub_explicit 원자 객체에서 원자가 아닌 값을 빼고 원자의 이전 값을 얻습니다. |
8 | atomic_fetch_and 및 atomic_fetch_and_explicit 원자 객체를 논리 AND의 결과로 비 원자 인수로 대체하고 원자의 이전 값을 얻습니다. |
9 | atomic_fetch_or 및 atomic_fetch_or_explicit 원자 객체를 논리 OR의 결과로 비 원자 인수로 대체하고 원자의 이전 값을 얻습니다. |
10 | atomic_fetch_xor 및 atomic_fetch_xor_explicit 원자 객체를 비 원자 인수가있는 논리 XOR의 결과로 대체하고 원자의 이전 값을 가져옵니다. |
플래그 유형 및 작업
Sr. 아니. | 플래그 유형 및 정의 |
---|---|
1 | atomic_flag 잠금없는 부울 원자 유형 |
2 | atomic_flag_test_and_set 및 atomic_flag_test_and_set_explicit 플래그를 원자 적으로 true로 설정하고 이전 값을 반환합니다. |
삼 | atomic_flag_clear 및 atomic_flag_clear_explicit 플래그 값을 원자 적으로 false로 설정합니다. |