C ++ Kitaplığı - <atomic>
Giriş
Bunlar, erişimi veri yarışlarına neden olmayacak şekilde garanti edilen ve farklı iş parçacıkları arasında bellek erişimlerini senkronize etmek için kullanılabilen bir değeri kapsülleyen türlerdir ve atomik kitaplık, kilitsiz eşzamanlı programlamaya izin veren ince taneli atomik işlemler için bileşenler sağlar. Her atomik işlem, aynı nesneyi içeren diğer atomik işlemlerle ilgili olarak bölünemez.
Atom türü
Sr.No. | Üye türleri ve Tanımı |
---|---|
1 | atomik Bool, integral ve işaretçi türleri için atomik sınıf şablonu ve uzmanlıkları |
C tarzı atom türleri
Aşağıdakiler atomik türlerdir ve ayrıca bu başlıkta tanımlanmıştır.
temel integral türleri için atomlar .
Bunlar, ilgili tam uzmanlık türlerinin ya atomik sınıf şablonu veya böyle bir uzmanlığın temel sınıfı.
genişlik tabanlı integraller için atomlar (<cinttypes>).
Bunların her biri ya temel integral türleri için yukarıdaki atomlardan birinin takma adıdır ya da tam bir uzmanlık alanıdır .atomikgenişletilmiş integral tipli sınıf şablonu .
Burada , N , 8 bir, 16, 32, 64, ya da kütüphanesi tarafından desteklenen herhangi bir başka tip genişliğidir.
içerilen tür | atom türü | açıklama |
---|---|---|
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 N_t |
atomic_int_least N_t |
|
uint_least N_t |
atomic_uint_least N_t |
|
int_fast N_t |
atomic_int_fast N_t |
|
uint_fast N_t |
atomic_uint_fast N_t |
|
intptr_t | atomic_intptr_t | |
uintptr_t | atomic_uintptr_t | |
size_t | atomic_size_t | |
ptrdiff_t | atomic_ptrdiff_t |
Atomik türlerle ilgili işlemler
&Sr.No. | İşlemler ve Tanım |
---|---|
1 | atomic_is_lock_free Atomik tipin işlemlerinin kilitsiz olup olmadığını kontrol etmek için kullanılır. |
2 | atomic_store ve atomic_store_explicit Atomik nesnenin değerini atomik olmayan bir argümanla otomatik olarak değiştirir |
3 | atomic_load ve atomic_load_explicit Atomik bir nesnede depolanan değeri atomik olarak elde eder |
4 | atomic_exchange & atomic_exchange_explicit Atomik nesnenin değerini atomik olmayan argümanla atomik olarak değiştirir ve atomik nesnenin eski değerini döndürür. |
5 | atomic_compare_exchange_weak & atomic_compare_exchange_weak_explicit & atomic_compare_exchange_strong & atomic_compare_exchange_strong_explicit Atomik nesnenin değerini atomik olmayan argümanla atomik olarak karşılaştırır ve eşitse atomik değişim veya değilse atomik yük gerçekleştirir. |
6 | atomic_fetch_add & atomic_fetch_add_explicit Atomik bir nesneye atomik olmayan bir değer ekler ve atomik nesnenin önceki değerini alır. |
7 | atomic_fetch_sub ve atomic_fetch_sub_explicit Atomik olmayan bir değeri atomik bir nesneden çıkarır ve önceki atomik değeri alır. |
8 | atomic_fetch_and & atomic_fetch_and_explicit Atomik nesneyi mantıksal AND sonucuyla atomik olmayan bir argümanla değiştirir ve atomik nesnenin önceki değerini alır. |
9 | atomic_fetch_or & atomic_fetch_or_explicit Atomik nesneyi mantıksal OR sonucunu atomik olmayan bir argümanla değiştirir ve atomik nesnenin önceki değerini alır. |
10 | atomic_fetch_xor ve atomic_fetch_xor_explicit Atomik nesneyi mantıksal XOR sonucuyla atomik olmayan bir argümanla değiştirir ve atomik nesnenin önceki değerini alır. |
Bayrak türü ve işlemleri
Sr.No. | Bayrak türü ve Tanımı |
---|---|
1 | atomic_flag Kilitsiz boole atomik türü |
2 | atomic_flag_test_and_set & atomic_flag_test_and_set_explicit Bayrağı atomik olarak true olarak ayarlar ve önceki değerini döndürür |
3 | atomic_flag_clear & atomic_flag_clear_explicit Bayrağın değerini atomik olarak yanlış olarak ayarlar |