<atomic>
' Atomik işlemleri destekleyen türler oluşturmak için kullanılacak şablon sınıfları tanımlar.
#include <atomic>
Notlar
Not
Kullanarak derlenmiş kodda /clr veya /clr:pure, bu başlığı engellenir.
Atomik İşlem iki sahip yardımcı anahtar özellikleri birden çok iş parçacığı doğru mutex kilidi kullanmadan bir nesneyi düzenlemek için kullanın.
Bölünemez bir atomik işlem olduğu için farklı bir iş parçacığı aynı nesneden ikinci bir atomik işlem yalnızca önce veya sonra ilk Atomik İşlem nesnenin durumunu elde edebilirsiniz.
Temel, memory_order bağımsız değişkeni, bir atomik işlem kurar Atomik İşlem diğer efektleri görünürlük gereksinimleri iş parçacığında sıralaması. Sonuç olarak, sipariş gereksinimleri ihlal derleyici iyileştirmelerini önler.
Bazı platformlarda bunu kullanmadan atomik işlemler bazı türleri için etkili bir şekilde uygulamak mümkün olmayabilir mutex kilitler. Atomik bir türü olan kilidi serbest ilgili türdeki hiçbir Atomik İşlem kilitleri kullanırsanız.
Sınıf atomic_flag sağlayan tutan atomik türü en az bir bool bayrağı. Onun her zaman operasyonlardır kilidi serbest.
Şablon sınıfı atomic<Ty> , bağımsız değişken türünde bir nesne depolar Ty ve o saklanan değeri atomik erişim sağlar. Kullanarak kopyaladığınız her türlü kullanarak örneklenebilen memcpy ve kullanarak eşitlik için test memcmp. Özellikle, bu gereklilikleri kullanıcı tanımlı türlerle ve birçok durumda, kayan nokta türleri ile kullanabilmeniz için.
Şablonu ayrıca ayrılmaz türleri için uzmanlıklar ve kısmi bir uzmanlığı için işaretçiler kümesi vardır. Bu uzmanlıklar birincil şablonu yoluyla kullanılamayan ek işlemler sağlar.
İşaretçi uzmanlıklar
atomic<Ty *> Kısmi uzmanlıklar tüm işaretçi türleri için geçerlidir. Bunlar, işaretçi aritmetiği için yöntemler sağlar.
Tümleşik uzmanlıklar
atomic<integral> Uzmanlıklar tüm tamsayı türleri için geçerlidir. Birincil şablonu yoluyla kullanılamayan ek işlemleri sağlarlar.
Her atomic<integral> kullanabileceğiniz karşılık gelen bir makro türü olan bir if directive derleme zamanında bu tür işlemler olup olmadığını belirlemek için kilidi serbest. Makro değer sıfır ise, işlem türü olmayan kilidi serbest. Değer 1 ise, işlem kilidi serbest ve bir çalışma zamanı olabilir onay gereklidir. Değeri 2 ise operasyonlardır kilidi serbest. İşlev kullanabilirsiniz atomic_is_lock_free çalışma zamanında türü üzerinde işlem olup olmadığını belirlemek için kilidi serbest.
Her bir tamsayı türü tamsayı türü bir nesne yöneten karşılık gelen bir adlandırılmış atomik türü yoktur. Her atomic_integral karşılık gelen örnekleme olarak aynı üye işlevleri kümesi türüne sahip atomic<Ty> ve herhangi bir üye olmayan atomik işlevleri için geçirilen.
atomic_integralTürü |
Tamsayı türü |
atomic_is_lock_freeMakro |
---|---|---|
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 adları atomik şablonunun uzmanlıklar <inttypes.h> üstbilgisinde tanımlanan türlerden bazıları için mevcut.
Atomik türü |
TypeDef adı |
---|---|
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> |
Yapılar
Ad |
Tanımlama |
---|---|
Saklanan değer üzerinde atomik işlemler gerçekleştiren bir nesneyi tanımlar. |
|
Başarıya temizler ve ayarlar bir nesneyi tanımlayan bir bool bayrağı. |
Numaralandırmaları
Ad |
Tanımlama |
---|---|
Bellek konumlarını eşitleme işlemleri için simgesel adlar sağlar. Bu işlemleri nasıl atamaları bir iş parçacığında başka görünebilir etkiler. |
İşlevler
Aşağıdaki listede bulunan bitmez işlevleri _explicit buna karşılık gelen semantiklerine sahip _explicit, bunlar örtülü olması dışında memory_order bağımsız değişkenleri memory_order_seq_cst.
Ad |
Tanımlama |
---|---|
Gerçekleştiren bir ve atomik karşılaştırmak exchange işlem. |
|
Gerçekleştiren bir ve atomik karşılaştırmak exchange işlem. |
|
Gerçekleştiren bir ve zayıf atomik karşılaştırmak exchange işlem. |
|
Gerçekleştiren bir ve zayıf atomik karşılaştırmak exchange işlem. |
|
Depolanan değerin yerine geçer. |
|
Depolanan değerin yerine geçer. |
|
Varolan bir saklı değer için belirtilen değer ekler. |
|
Varolan bir saklı değer için belirtilen değer ekler. |
|
Bir bit seviyesinde gerçekleştiren and belirtilen değer ve varolan bir depolanan değer. |
|
Bir bit seviyesinde gerçekleştiren and belirtilen değer ve varolan bir depolanan değer. |
|
Bir bit seviyesinde gerçekleştiren or belirtilen değer ve varolan bir depolanan değer. |
|
Bir bit seviyesinde gerçekleştiren or belirtilen değer ve varolan bir depolanan değer. |
|
Varolan bir saklı değer belirtilen bir değerden çıkarma işlemi yapar. |
|
Varolan bir saklı değer belirtilen bir değerden çıkarma işlemi yapar. |
|
Bir bit seviyesinde gerçekleştiren exclusive or belirtilen değer ve varolan bir depolanan değer. |
|
Bir bit seviyesinde gerçekleştiren exclusive or belirtilen değer ve varolan bir depolanan değer. |
|
Bayrağını ayarlar bir atomic_flag nesnesinin false. |
|
Bayrağını ayarlar bir atomic_flag nesnesinin false. |
|
Bayrağını ayarlar bir atomic_flag nesnesinin true. |
|
Bayrağını ayarlar bir atomic_flag nesnesinin true. |
|
Saklanan değer ayarlar bir atomic nesne. |
|
Belirtilen nesne üzerinde atomik işlemler olup olmadığını belirtir kilidi serbest. |
|
Başarıya bir değer alır. |
|
Başarıya bir değer alır. |
|
Gibi davranan bir çit bellek gereksinimleri arasında bir arama içinde dilimleri iş parçacığı sıralama olan iş parçacığında yürütülen sinyal işleyiciler kurar. |
|
Başarıya bir değer saklar. |
|
Başarıya bir değer saklar. |
|
Gibi davranan bir çit bellek gereksinimlerini diğer dilimleri sipariş oluşturur. |
|
Olası bağımlılık zincirini keser. |