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_leastN_t atomic_int_leastN_t
uint_leastN_t atomic_uint_leastN_t
int_fastN_t atomic_int_fastN_t
uint_fastN_t atomic_uint_fastN_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