Aracılığıyla paylaş


atomic Yapı

türünde Tydepolanan bir değer üzerinde işlem gerçekleştiren atomic bir nesneyi açıklar.

Sözdizimi

template <class Ty>
struct atomic;

Üyeler

Üye Açıklama
Oluşturucu
atomic Atomik bir nesne oluşturur.
İşleçler
atomic::operator Ty Depolanan değeri okur ve döndürür. (atomic::load)
atomic::operator= Depolanan değeri değiştirmek için belirtilen değeri kullanır. (atomic::store)
atomic::operator++ Depolanan değeri artırır. Yalnızca integral ve işaretçi özelleştirmeleri tarafından kullanılır.
atomic::operator+= Depolanan değere belirtilen değeri ekler. Yalnızca integral ve işaretçi özelleştirmeleri tarafından kullanılır.
atomic::operator-- Depolanan değeri azaltma. Yalnızca integral ve işaretçi özelleştirmeleri tarafından kullanılır.
atomic::operator-= Belirtilen değeri depolanan değerden çıkarır. Yalnızca integral ve işaretçi özelleştirmeleri tarafından kullanılır.
atomic::operator&= Belirtilen değer ve depolanan değer üzerinde bit düzeyinde "ve" (&) gerçekleştirir. Yalnızca integral özelleştirmeleri tarafından kullanılır.
atomic::operator|= Belirtilen değer ve depolanan değer üzerinde bit düzeyinde "veya" (|) gerçekleştirir. Yalnızca integral özelleştirmeleri tarafından kullanılır.
atomic::operator^= Belirtilen değer ve depolanan değer üzerinde bit düzeyinde "özel veya" (^) gerçekleştirir. Yalnızca integral özelleştirmeleri tarafından kullanılır.
İşlevler
compare_exchange_strong üzerinde this bir atomic_compare_and_exchange işlem gerçekleştirir ve sonucu döndürür.
compare_exchange_weak üzerinde this bir weak_atomic_compare_and_exchange işlem gerçekleştirir ve sonucu döndürür.
fetch_add Depolanan değere belirtilen değeri ekler.
fetch_and Belirtilen değer ve depolanan değer üzerinde bit düzeyinde "ve" (&) gerçekleştirir.
fetch_or Belirtilen değer ve depolanan değer üzerinde bit düzeyinde "veya" (|) gerçekleştirir.
fetch_sub Belirtilen değeri depolanan değerden çıkarır.
fetch_xor Belirtilen değer ve depolanan değer üzerinde bit düzeyinde "özel veya" (^) gerçekleştirir.
is_lock_free üzerindeki this işlemlerin kilitsiz olup olmadığını atomic belirtir. Bu atomic tür üzerinde hiçbir atomic işlem kilit kullanmazsa bir tür kilitsizdir.
load Depolanan değeri okur ve döndürür.
store Depolanan değeri değiştirmek için belirtilen değeri kullanır.

Açıklamalar

Türün Ty önemsiz bir şekilde kopyalanabilir olması gerekir. Başka bir ifadeyle, baytlarını kopyalamak için komutunun memcpy özgün nesneyle eşit olan geçerli Ty bir nesne üretmesi gerekir. compare_exchange_weak ve compare_exchange_strong üye işlevleri, iki Ty değerin eşit olup olmadığını belirlemek için kullanırmemcmp. Bu işlevler - tanımlı operator==bir Tykullanmaz. türündeki atomic Tydeğerleri kopyalamak için kullanılan memcpy üye işlevleri.

Tüm işaretçi türleri için kısmi bir özelleştirme ( atomic<Ty*>) vardır. Özelleştirme, yönetilen işaretçi değerine bir uzaklık eklenmesini veya ondan uzaklık çıkarma işlemini etkinleştirir. Aritmetik işlemler türünde ptrdiff_t bir bağımsız değişken alır ve bu bağımsız değişkeni boyutuna Ty göre normal adres aritmetiğiyle tutarlı olacak şekilde ayarlar.

dışında boolher tamser türü için bir özelleştirme vardır. Her özelleştirme, atomik aritmetik ve mantıksal işlemler için zengin bir yöntem kümesi sağlar.

atomic<char>
atomic<signed char>
atomic<unsigned char>
atomic<char16_t>
atomic<char32_t>
atomic<wchar_t>
atomic<short>

atomic<unsigned short>
atomic<int>
atomic<unsigned int>
atomic<long>
atomic<unsigned long>
atomic<long long>
atomic<unsigned long long>

İntegral özelleştirmeler ilgili atomic_integral türlerden türetilir. Örneğin, atomic<unsigned int> 'den atomic_uinttüretilir.

Gereksinimler

Üstbilgi: <atomic>

Ad alanı: std

atomic::atomic

Atomik bir nesne oluşturur.

atomic();
atomic( const atomic& );
atomic( Ty Value ) noexcept;

Parametreler

Value
Başlatma değeri.

Açıklamalar

Atomik nesneler kopyalanamaz veya taşınamaz.

örneğini atomic<Ty> oluşturan nesneler, toplu başlatma kullanılarak değil, yalnızca türünde Ty bir bağımsız değişken alan oluşturucu tarafından başlatılabilir. Ancak, atomic_integral nesneler yalnızca toplu başlatma kullanılarak başlatılabilir.

atomic<int> ai0 = ATOMIC_VAR_INIT(0);
atomic<int> ai1(0);

atomic::operator Ty

şablonunda belirtilen türün işleci. atomic<Ty> içinde *thisdepolanan değeri alır.

atomic<Ty>::operator Ty() const volatile noexcept;
atomic<Ty>::operator Ty() const noexcept;

Açıklamalar

Bu işleç, uygular memory_order_seq_cst memory_order.

atomic::operator=

Belirtilen değeri depolar.

Ty operator=(
   Ty Value
) volatile noexcept;
Ty operator=(
   Ty Value
) noexcept;

Parametreler

Value
Bir Ty nesnesi.

Dönüş Değeri

Value döndürür.

atomic::operator++

Depolanan değeri artırır. Yalnızca integral ve işaretçi özelleştirmeleri tarafından kullanılır.

Ty atomic<Ty>::operator++(int) volatile noexcept;
Ty atomic<Ty>::operator++(int) noexcept;
Ty atomic<Ty>::operator++() volatile noexcept;
Ty atomic<Ty>::operator++() noexcept;

Dönüş Değeri

İlk iki işleç artımlı değeri döndürür; son iki işleç, artımdan önceki değeri döndürür. İşleçler kullanır memory_order_seq_cst memory_order.

atomic::operator+=

Depolanan değere belirtilen değeri ekler. Yalnızca integral ve işaretçi özelleştirmeleri tarafından kullanılır.

Ty atomic<Ty>::operator+=(
   Ty Value
) volatile noexcept;
Ty atomic<Ty>::operator+=(
   Ty Value
) noexcept;

Parametreler

Value
İntegral veya işaretçi değeri.

Dönüş Değeri

Toplamanın Ty sonucunu içeren bir nesne.

Açıklamalar

Bu işleç kullanır memory_order_seq_cst memory_order.

atomic::operator--

Depolanan değeri azaltma. Yalnızca integral ve işaretçi özelleştirmeleri tarafından kullanılır.

Ty atomic<Ty>::operator--(int) volatile noexcept;
Ty atomic<Ty>::operator--(int) noexcept;
Ty atomic<Ty>::operator--() volatile noexcept;
Ty atomic<Ty>::operator--() noexcept;

Dönüş Değeri

İlk iki işleç azalan değeri döndürür; son iki işleç, azaltmadan önceki değeri döndürür. İşleçler kullanır memory_order_seq_cst memory_order.

atomic::operator-=

Belirtilen değeri depolanan değerden çıkarır. Yalnızca integral ve işaretçi özelleştirmeleri tarafından kullanılır.

Ty atomic<Ty>::operator-=(
   Ty Value
) volatile noexcept;
Ty atomic<Ty>::operator-=(
   Ty Value
) noexcept;

Parametreler

Value
İntegral veya işaretçi değeri.

Dönüş Değeri

Ty Çıkarma işleminin sonucunu içeren bir nesne.

Açıklamalar

Bu işleç kullanır memory_order_seq_cst memory_order.

atomic::operator&=

Belirtilen bir değer ve depolanan *thisdeğeri üzerinde bit düzeyinde "ve" (&) gerçekleştirir. Yalnızca integral özelleştirmeleri tarafından kullanılır.

atomic<Ty>::operator&= (
   Ty Value
) volatile noexcept;
atomic<Ty>::operator&= (
   Ty Value
) noexcept;

Parametreler

Value
türünde Tybir değer.

Dönüş Değeri

Bit düzeyinde "ve" (&) sonucu.

Açıklamalar

Bu işleç, içinde depolanan değerini *this bit düzeyinde "ve" (&) Value ve içinde depolanan *thisgeçerli değeri ile sınırlamaları memory_order_seq_cst memory_orderiçinde değiştirmek için bir okuma-değiştirme-yazma işlemi gerçekleştirir.

atomic::operator|=

Belirtilen bir değer ve depolanan *thisdeğeri üzerinde bit düzeyinde "veya" (|) gerçekleştirir. Yalnızca integral özelleştirmeleri tarafından kullanılır.

atomic<Ty>::operator|= (
   Ty Value
) volatile noexcept;
atomic<Ty>::operator|= (
   Ty Value
) noexcept;

Parametreler

Value
türünde Tybir değer.

Dönüş Değeri

Bit düzeyinde "veya" (|) sonucu.

Açıklamalar

Bu işleç, saklı değerini *this bit düzeyinde "veya" (|) Value ve içinde depolanan *thisgeçerli değeri kısıtlamaların kısıtlamaları memory_order_seq_cst memory_order içinde değiştirmek için bir okuma-değiştirme-yazma işlemi gerçekleştirir.

atomic::operator^=

Belirtilen bir değer ve depolanan *thisdeğeri üzerinde bit düzeyinde "özel veya" (^) gerçekleştirir. Yalnızca integral özelleştirmeleri tarafından kullanılır.

atomic<Ty>::operator^= (
   Ty Value
) volatile noexcept;
atomic<Ty>::operator^= (
   Ty Value
) noexcept;

Parametreler

Value
türünde Tybir değer.

Dönüş Değeri

Bit tabanlı "özel veya" (^) sonucunu verir.

Açıklamalar

Bu işleç, saklı değerini *this bit düzeyinde "özel veya" (^) Value ve içinde depolanan *thisgeçerli değeri kısıtlamaların kısıtlamaları memory_order_seq_cst memory_order içinde değiştirmek için bir okuma-değiştirme-yazma işlemi gerçekleştirir.

atomic::compare_exchange_strong

üzerinde *thisatomik karşılaştırma ve değişim işlemi gerçekleştirir.

bool compare_exchange_strong(
   Ty& Exp,
   Ty Value,
   memory_order Order1,
   memory_order Order2
) volatile noexcept;
bool compare_exchange_strong(
   Ty& Exp,
   Ty Value,
   memory_order Order1,
   memory_order Order2
) noexcept;
bool compare_exchange_strong(
   Ty& Exp,
   Ty Value,
   memory_order Order1 = memory_order_seq_cst
) volatile noexcept;
bool compare_exchange_strong(
   Ty& Exp,
   Ty Value,
   memory_order Order1 = memory_order_seq_cst
) noexcept;

Parametreler

Exp
türünde Tybir değer.

Value
türünde Tybir değer.

Order1
İlk memory_order bağımsız değişken.

Order2
İkinci memory_order bağımsız değişken.

Dönüş Değeri

bool Değer karşılaştırmasının sonucunu gösteren bir.

Açıklamalar

Bu atomik karşılaştırma ve değişim işlemi ile Expiçinde *this depolanan değeri karşılaştırır. Değerler eşitse, işlem bir read-modify-write işlemi kullanarak ve tarafından Order1belirtilen bellek sırası kısıtlamalarını uygulayarak ile Value depolanan *this değerin yerini alır. Değerler eşit değilse, işlem değerini değiştirmek Exp için içinde *this depolanan değeri kullanır ve tarafından Order2belirtilen bellek sırası kısıtlamalarını uygular.

İkinci memory_order bir değeri olmayan aşırı yüklemeler değerini Order1temel alan örtük Order2 bir kullanır. ise Order1 memory_order_acq_rel, Order2 şeklindedir memory_order_acquire. ise Order1 memory_order_release, Order2 şeklindedir memory_order_relaxed. Diğer tüm durumlarda eşittir Order2 Order1.

İki memory_order parametre alan aşırı yüklemeler için değeri Order2 veya memory_order_acq_relolmamalıdır memory_order_release ve değerinden Order1daha güçlü olmamalıdır.

atomic::compare_exchange_weak

üzerinde *thiszayıf bir atomik karşılaştırma ve değişim işlemi gerçekleştirir.

bool compare_exchange_weak(
   Ty& Exp,
   Ty Value,
   memory_order Order1,
   memory_order Order2
) volatile noexcept;
bool compare_exchange_weak(
   Ty& Exp,
   Ty Value,
   memory_order Order1,
   memory_order Order2
) noexcept;
bool compare_exchange_weak(
   Ty& Exp,
   Ty Value,
   memory_order Order1 = memory_order_seq_cst
) volatile noexcept;
bool compare_exchange_weak(
   Ty& Exp,
   Ty Value,
   memory_order Order1 = memory_order_seq_cst
) noexcept;

Parametreler

Exp
türünde Tybir değer.

Value
türünde Tybir değer.

Order1
İlk memory_order bağımsız değişken.

Order2
İkinci memory_order bağımsız değişken.

Dönüş Değeri

bool Değer karşılaştırmasının sonucunu gösteren bir.

Açıklamalar

Bu atomik karşılaştırma ve değişim işlemi ile Expiçinde *this depolanan değeri karşılaştırır. Değerler eşitse, işlem bir read-modify-write işlemi kullanarak ve tarafından Order1belirtilen bellek sırası kısıtlamalarını uygulayarak ile Value depolanan *this değerin yerini alır. Değerler eşit değilse, işlem değerini değiştirmek Exp için içinde *this depolanan değeri kullanır ve tarafından Order2belirtilen bellek sırası kısıtlamalarını uygular.

Zayıf bir atomik karşılaştırma ve değişim işlemi, karşılaştırılan değerler eşitse bir değişim gerçekleştirir. Değerler eşit değilse, işlemin değişim gerçekleştirmesi garanti değildir.

İkinci memory_order bir değeri olmayan aşırı yüklemeler değerini Order1temel alan örtük Order2 bir kullanır. ise Order1 memory_order_acq_rel, Order2 şeklindedir memory_order_acquire. ise Order1 memory_order_release, Order2 şeklindedir memory_order_relaxed. Diğer tüm durumlarda eşittir Order2 Order1.

İki memory_order parametre alan aşırı yüklemeler için değeri Order2 veya memory_order_acq_relolmamalıdır memory_order_release ve değerinden Order1daha güçlü olmamalıdır.

atomic::exchange

depolanan değerini değiştirmek için belirtilen değeri *thiskullanır.

Ty atomic<Ty>::exchange(
   Ty Value,
   memory_order Order = memory_order_seq_cst
) volatile noexcept;
Ty atomic<Ty>::exchange(
   Ty Value,
   memory_order Order = memory_order_seq_cst
) noexcept;

Parametreler

Value
türünde Tybir değer.

Order
Bir memory_order.

Dönüş Değeri

Değişimden önceki depolanmış değeri *this .

Açıklamalar

Bu işlem, tarafından Orderbelirtilen bellek kısıtlamaları içinde içinde *thisdepolanan değeri değiştirmek için kullanılacak Value bir okuma-değiştirme-yazma işlemi gerçekleştirir.

atomic::fetch_add

içinde *thisdepolanan değeri getirir ve ardından depolanan değere belirtilen değeri ekler.

Ty atomic<Ty>::fetch_add (
   Ty Value,
   memory_order Order = memory_order_seq_cst
) volatile noexcept;
Ty atomic<Ty>::fetch_add (
   Ty Value,
   memory_order Order = memory_order_seq_cst
) noexcept;

Parametreler

Value
türünde Tybir değer.

Order
Bir memory_order.

Dönüş Değeri

Ty Eklemeden önce içinde *this depolanan değeri içeren bir nesne.

Açıklamalar

yöntemi, fetch_add içinde *thisdepolanan değere atomik olarak eklemek Value için bir okuma-değiştirme-yazma işlemi gerçekleştirir ve tarafından Orderbelirtilen bellek kısıtlamalarını uygular.

atomic::fetch_and

Bir değer ve içinde *thisdepolanan mevcut bir değer üzerinde bit düzeyinde "ve" (&) gerçekleştirir.

Ty atomic<Ty>::fetch_and (
   Ty Value,
   memory_order Order = memory_order_seq_cst
) volatile noexcept;
Ty atomic<Ty>::fetch_and (
   Ty Value,
   memory_order Order = memory_order_seq_cst
) noexcept;

Parametreler

Value
türünde Tybir değer.

Order
Bir memory_order.

Dönüş Değeri

Ty Bit düzeyinde "ve" (&) sonucunu içeren bir nesne.

Açıklamalar

yöntemi, fetch_and saklı değerini *this tarafından belirtilen Orderbellek kısıtlamaları içinde bit düzeyinde "ve" (&) Value ve içinde *thisdepolanan geçerli değerle değiştirmek için bir okuma-değiştirme-yazma işlemi gerçekleştirir.

atomic::fetch_or

Bir değer ve içinde *thisdepolanan mevcut bir değer üzerinde bit düzeyinde "veya" (|) gerçekleştirir.

Ty atomic<Ty>::fetch_or (
   Ty Value,
   memory_order Order = memory_order_seq_cst
) volatile noexcept;
Ty atomic<Ty>::fetch_or (
   Ty Value,
   memory_order Order = memory_order_seq_cst
) noexcept;

Parametreler

Value
türünde Tybir değer.

Order
Bir memory_order.

Dönüş Değeri

Ty Bit düzeyinde "veya" (|) sonucunu içeren bir nesne.

Açıklamalar

yöntemi, fetch_or saklı değerini *this bit düzeyinde "veya" (|) Value ile ve tarafından Orderbelirtilen bellek kısıtlamaları içinde depolanan *thisgeçerli değeriyle değiştirmek için bir okuma-değiştirme-yazma işlemi gerçekleştirir.

atomic::fetch_sub

Belirtilen değeri depolanan değerden çıkarır.

Ty atomic<Ty>::fetch_sub (
   Ty Value,
   memory_order Order = memory_order_seq_cst
) volatile noexcept;
Ty atomic<Ty>::fetch_sub (
   Ty Value,
   memory_order Order = memory_order_seq_cst
) noexcept;

Parametreler

Value
türünde Tybir değer.

Order
Bir memory_order.

Dönüş Değeri

Ty Çıkarma işleminin sonucunu içeren bir nesne.

Açıklamalar

yöntemi, fetch_sub tarafından Orderbelirtilen bellek kısıtlamaları içinde içindeki *thisdepolanan değerden atomik olarak çıkarmak Value için bir okuma-değiştirme-yazma işlemi gerçekleştirir.

atomic::fetch_xor

Bir değer ve içinde *thisdepolanan mevcut bir değer üzerinde bit düzeyinde "özel veya" (^) gerçekleştirir.

Ty atomic<Ty>::fetch_xor (
   Ty Value,
   memory_order Order = memory_order_seq_cst
) volatile noexcept;
Ty atomic<Ty>::fetch_xor (
   Ty Value,
   memory_order Order = memory_order_seq_cst
) noexcept;

Parametreler

Value
türünde Tybir değer.

Order
Bir memory_order.

Dönüş Değeri

Ty Bit düzeyinde "özel veya" (^) sonucunu içeren bir nesne.

Açıklamalar

yöntemi, fetch_xor saklı değerini *this bit tabanlı "özel veya" (^) Value değerini ve içinde *thisdepolanan geçerli değeriyle değiştirmek için bir okuma-değiştirme-yazma işlemi gerçekleştirir ve tarafından Orderbelirtilen bellek kısıtlamalarını uygular.

atomic::is_lock_free

üzerindeki *this işlemlerin kilitsiz olup olmadığını atomic belirtir.

bool is_lock_free() const volatile noexcept;

Dönüş Değeri

trueüzerindeki işlemler kilitsizseatomic; değilse, false.*this

Açıklamalar

Bu atomic tür üzerinde hiçbir atomic işlem kilit kullanmazsa bir tür kilitsizdir.

atomic::load

belirtilen bellek kısıtlamaları içinde içinde *thisdepolanan değeri alır.

Ty atomic::load(
   memory_order Order = memory_order_seq_cst
) const volatile noexcept;
Ty atomic::load(
   memory_order Order = memory_order_seq_cst
) const noexcept;

Parametreler

Order
Bir memory_order. Orderveya memory_order_acq_relolmamalıdırmemory_order_release.

Dönüş Değeri

içinde *thisdepolanan alınan değer.

atomic::store

Belirtilen değeri depolar.

void atomic<Ty>::store(
   Ty Value,
   memory_order Order = memory_order_seq_cst
) volatile noexcept;
void atomic<Ty>::store(
   Ty Value,
   memory_order Order = memory_order_seq_cst
) noexcept;

Parametreler

Value
Bir Ty nesnesi.

Order
Bir memory_order kısıtlama.

Açıklamalar

Bu üye işlevi, tarafından Orderbelirtilen bellek kısıtlamaları içinde atomik olarak içinde *thisdepolarValue.

Ayrıca bkz.

<atomic>
Üst Bilgi Dosyaları Başvurusu