Aracılığıyla paylaş


<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

Atomik yapısı

Saklanan değer üzerinde atomik işlemler gerçekleştiren bir nesneyi tanımlar.

atomic_flag yapısı

Başarıya temizler ve ayarlar bir nesneyi tanımlayan bir bool bayrağı.

Numaralandırmaları

Ad

Tanımlama

memory_order numaralandırma

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

atomic_compare_exchange_strong işlevi

Gerçekleştiren bir ve atomik karşılaştırmak exchange işlem.

atomic_compare_exchange_strong_explicit işlevi

Gerçekleştiren bir ve atomik karşılaştırmak exchange işlem.

atomic_compare_exchange_weak işlevi

Gerçekleştiren bir ve zayıf atomik karşılaştırmak exchange işlem.

atomic_compare_exchange_weak_explicit işlevi

Gerçekleştiren bir ve zayıf atomik karşılaştırmak exchange işlem.

atomic_exchange İşlevi

Depolanan değerin yerine geçer.

atomic_exchange_explicit işlevi

Depolanan değerin yerine geçer.

atomic_fetch_add İşlevi

Varolan bir saklı değer için belirtilen değer ekler.

atomic_fetch_add_explicit işlevi

Varolan bir saklı değer için belirtilen değer ekler.

atomic_fetch_and İşlevi

Bir bit seviyesinde gerçekleştiren and belirtilen değer ve varolan bir depolanan değer.

atomic_fetch_and_explicit işlevi

Bir bit seviyesinde gerçekleştiren and belirtilen değer ve varolan bir depolanan değer.

atomic_fetch_or İşlevi

Bir bit seviyesinde gerçekleştiren or belirtilen değer ve varolan bir depolanan değer.

atomic_fetch_or_explicit işlevi

Bir bit seviyesinde gerçekleştiren or belirtilen değer ve varolan bir depolanan değer.

atomic_fetch_sub İşlevi

Varolan bir saklı değer belirtilen bir değerden çıkarma işlemi yapar.

atomic_fetch_sub_explicit işlevi

Varolan bir saklı değer belirtilen bir değerden çıkarma işlemi yapar.

atomic_fetch_xor İşlevi

Bir bit seviyesinde gerçekleştiren exclusive or belirtilen değer ve varolan bir depolanan değer.

atomic_fetch_xor_explicit işlevi

Bir bit seviyesinde gerçekleştiren exclusive or belirtilen değer ve varolan bir depolanan değer.

atomic_flag_clear işlevi

Bayrağını ayarlar bir atomic_flag nesnesinin false.

atomic_flag_clear_explicit işlevi

Bayrağını ayarlar bir atomic_flag nesnesinin false.

atomic_flag_test_and_set işlevi

Bayrağını ayarlar bir atomic_flag nesnesinin true.

atomic_flag_test_and_set_explicit işlevi

Bayrağını ayarlar bir atomic_flag nesnesinin true.

atomic_init işlevi

Saklanan değer ayarlar bir atomic nesne.

atomic_is_lock_free İşlevi

Belirtilen nesne üzerinde atomik işlemler olup olmadığını belirtir kilidi serbest.

atomic_load işlevi

Başarıya bir değer alır.

atomic_load_explicit işlevi

Başarıya bir değer alır.

atomic_signal_fence işlevi

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.

atomic_store işlevi

Başarıya bir değer saklar.

atomic_store_explicit işlevi

Başarıya bir değer saklar.

atomic_thread_fence işlevi

Gibi davranan bir çit bellek gereksinimlerini diğer dilimleri sipariş oluşturur.

kill_dependency işlevi

Olası bağımlılık zincirini keser.

Ayrıca bkz.

Başvuru

Standart Şablon Kütüphanesi

Diğer Kaynaklar

Üstbilgi dosyaları