atomic
Yapı
türünde Ty
depolanan 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 Ty
kullanmaz. türündeki atomic
Ty
değ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 bool
her 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_uint
tü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 *this
depolanan 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 *this
değ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 Ty
bir 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 *this
geçerli değeri ile sınırlamaları 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 *this
değ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 Ty
bir 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 *this
geç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 *this
değ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 Ty
bir 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 *this
geç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 *this
atomik 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 Ty
bir değer.
Value
türünde Ty
bir 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 Exp
iç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 Order1
belirtilen 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 Order2
belirtilen bellek sırası kısıtlamalarını uygular.
İkinci memory_order
bir değeri olmayan aşırı yüklemeler değerini Order1
temel 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_rel
olmamalıdır memory_order_release
ve değerinden Order1
daha güçlü olmamalıdır.
atomic::compare_exchange_weak
üzerinde *this
zayı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 Ty
bir değer.
Value
türünde Ty
bir 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 Exp
iç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 Order1
belirtilen 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 Order2
belirtilen 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 Order1
temel 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_rel
olmamalıdır memory_order_release
ve değerinden Order1
daha güçlü olmamalıdır.
atomic::exchange
depolanan değerini değiştirmek için belirtilen değeri *this
kullanı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 Ty
bir 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 Order
belirtilen bellek kısıtlamaları içinde içinde *this
depolanan 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 *this
depolanan 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 Ty
bir 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 *this
depolanan değere atomik olarak eklemek Value
için bir okuma-değiştirme-yazma işlemi gerçekleştirir ve tarafından Order
belirtilen bellek kısıtlamalarını uygular.
atomic::fetch_and
Bir değer ve içinde *this
depolanan 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 Ty
bir 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 Order
bellek kısıtlamaları içinde bit düzeyinde "ve" (&
) Value
ve içinde *this
depolanan 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 *this
depolanan 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 Ty
bir 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 Order
belirtilen bellek kısıtlamaları içinde depolanan *this
geç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 Ty
bir 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 Order
belirtilen bellek kısıtlamaları içinde içindeki *this
depolanan 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 *this
depolanan 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 Ty
bir 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 *this
depolanan geçerli değeriyle değiştirmek için bir okuma-değiştirme-yazma işlemi gerçekleştirir ve tarafından Order
belirtilen 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 *this
depolanan 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
. Order
veya memory_order_acq_rel
olmamalıdırmemory_order_release
.
Dönüş Değeri
içinde *this
depolanan 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 Order
belirtilen bellek kısıtlamaları içinde atomik olarak içinde *this
depolarValue
.