Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Rubriken <atomic> innehåller följande funktioner:
atomic_compare_exchange_strong
Utför en atomisk jämförelse- och utbytesåtgärd.
template <class Ty>
inline bool atomic_compare_exchange_strong(
volatile atomic<Ty>* Atom,
Ty* Exp,
Value) noexcept;
template <class Ty>
inline bool atomic_compare_exchange_strong(
atomic<Ty>* Atom,
Ty* Exp,
Ty Value) noexcept;
Parameterar
Atom
En pekare till ett atomic objekt som lagrar ett värde av typen Ty.
Exp
En pekare till ett värde av typen Ty.
Value
Ett värde av typen Ty.
Returvärde
true om värdena är lika med, annars false.
Anmärkningar
Den här metoden utför en atomisk jämförelse- och utbytesåtgärd med implicita memory_order.memory_order_seq_cst argument. Mer information finns i atomic_compare_exchange_strong_explicit.
atomic_compare_exchange_strong_explicit
Utför en atomic compare and exchange åtgärd.
template <class T>
inline bool atomic_compare_exchange_strong_explicit(
volatile atomic<Ty>* Atom,
Ty* Exp,
Ty Value,
memory_order Order1,
memory_order Order2) noexcept;
template <class Ty>
inline bool atomic_compare_exchange_strong_explicit(
atomic<Ty>* Atom,
Ty* Exp,
Ty Value,
memory_order Order1,
memory_order Order2) noexcept;
Parameterar
Atom
En pekare till ett atomic objekt som lagrar ett värde av typen Ty.
Exp
En pekare till ett värde av typen Ty.
Value
Ett värde av typen Ty.
Order1
Första memory_order argumentet.
Order2
Andra memory_order argumentet. Värdet Order2 för får inte vara memory_order_release eller memory_order_acq_rel, det kan inte vara starkare än värdet för Order1.
Returvärde
true om värdena är lika med, annars false.
Anmärkningar
En atomic compare and exchange operation jämför värdet som lagras i objektet som pekas på av Atom mot det värde som pekas på av Exp. Om värdena är lika ersätts värdet som lagras i objektet som pekas på av Atom med Value genom att använda en läs-ändra-skriv-åtgärd och tillämpa de minnesordningsbegränsningar som anges av Order1. Om värdena inte är lika med ersätter åtgärden det värde som pekas på Exp med värdet som lagras i objektet som pekas på av Atom och tillämpar minnesordningsbegränsningarna som anges av Order2.
atomic_compare_exchange_weak
Utför en svag atomisk jämförelse- och utbytesåtgärd .
template <class Ty>
inline bool atomic_compare_exchange_strong(
volatile atomic<Ty>* Atom,
Ty* Exp,
Ty Value) noexcept;
template <class Ty>
inline bool atomic_compare_exchange_strong(
atomic<Ty>* Atom,
Ty* Exp,
Ty Value) noexcept;
Parameterar
Atom
En pekare till ett atomic objekt som lagrar ett värde av typen Ty.
Exp
En pekare till ett värde av typen Ty.
Value
Ett värde av typen Ty.
Returvärde
true om värdena är lika med, annars false.
Anmärkningar
Den här metoden utför en svag atomisk jämförelse- och utbytesåtgärd som har implicita memory_order.memory_order_seq_cst argument. Mer information finns i atomic_compare_exchange_weak_explicit.
atomic_compare_exchange_weak_explicit
Utför en svag atomisk jämförelse- och utbytesåtgärd .
template <class Ty>
inline bool atomic_compare_exchange_weak_explicit(
volatile atomic<Ty>* Atom,
Ty* Exp,
Ty Value,
memory_order Order1,
memory_order Order2) noexcept;
template <class Ty>
inline bool atomic_compare_exchange_weak_explicit(
atomic<Ty>* Atom,
Ty* Exp,
Ty Value,
memory_order Order1,
memory_order Order2) noexcept;
Parameterar
Atom
En pekare till ett atomic objekt som lagrar ett värde av typen Ty.
Exp
En pekare till ett värde av typen Ty.
Value
Ett värde av typen Ty.
Order1
Första memory_order argumentet.
Order2
Andra memory_order argumentet. Värdet Order2 för får inte vara memory_order_release eller memory_order_acq_rel, och kan inte heller vara starkare än värdet för Order1.
Returvärde
true om värdena är lika med, annars false.
Anmärkningar
Både de starka och svaga smakerna av en atomic compare and exchange operation garanti för att de inte lagrar det nya värdet om de förväntade och aktuella värdena inte är lika. Den starka smaken garanterar att det nya värdet lagras om de förväntade och aktuella värdena är lika. Den svaga smaken kan ibland returnera false och inte lagra det nya värdet även om de aktuella och förväntade värdena är lika. Med andra ord returnerar falsefunktionen , men en senare undersökning av det förväntade värdet kan visa att den inte har ändrats och därför borde ha jämförts som lika.
atomic_exchange
Används Value för att ersätta det lagrade värdet för Atom.
template <class T>
inline Ty atomic_exchange(volatile atomic<Ty>* _Atom, Ty Value) noexcept;
template <class Ty>
inline T atomic_exchange(atomic<Ty>* Atom, Ty Value) noexcept;
Parameterar
Atom
En pekare till ett atomic objekt som lagrar ett värde av typen Ty.
Value
Ett värde av typen Ty.
Returvärde
Det lagrade värdet Atom för före utbytet.
Anmärkningar
Funktionen atomic_exchange utför en läs-ändra-skriv-åtgärd för att utbyta värdet som lagras i Atom med , med Valuehjälp av memory_order.memory_order_seq_cst.
atomic_exchange_explicit
Ersätter det lagrade värdet Atom för med Value.
template <class Ty>
inline Ty atomic_exchange_explicit(
volatile atomic<Ty>* Atom,
Ty Value,
memory_order Order) noexcept;
template <class Ty>
inline Ty atomic_exchange_explicit(
atomic<Ty>* Atom,
Ty Value,
memory_order Order) noexcept;
Parameterar
Atom
En pekare till ett atomic objekt som lagrar ett värde av typen Ty.
Value
Ett värde av typen Ty.
Order
En memory_order.
Returvärde
Det lagrade värdet Atom för före utbytet.
Anmärkningar
Funktionen atomic_exchange_explicit utför en läs-ändra-skriv-åtgärd för att utbyta värdet som lagras i Atom med Value, inom de minnesbegränsningar som anges av Order.
atomic_fetch_add
Lägger till ett värde i ett befintligt värde som lagras i ett atomic objekt.
template <class T>
T* atomic_fetch_add(volatile atomic<T*>* Atom, ptrdiff_t Value) noexcept;
template <class T>
T* atomic_fetch_add(atomic<T*>* Atom, ptrdiff_t Value) noexcept;
Parameterar
Atom
En pekare till ett atomic objekt som lagrar en pekare för att skriva T.
Value
Ett värde av typen ptrdiff_t.
Returvärde
Värdet för pekaren som objektet innehåller atomic omedelbart innan åtgärden utfördes.
Anmärkningar
Funktionen atomic_fetch_add utför en läs-ändra-skriv-åtgärd för att atomiskt lägga Value till det lagrade värdet i Atom, med hjälp av villkoret memory_order.memory_order_seq_cst .
När atomtypen är atomic_address, har typen Value och åtgärden behandlar den lagrade pekaren som en ptrdiff_tchar * .
Den här åtgärden är också överbelastad för integraltyper:
integral atomic_fetch_add(volatile atomic-integral* Atom, integral Value) noexcept;
integral atomic_fetch_add(atomic-integral* Atom, integral Value) noexcept;
atomic_fetch_add_explicit
Lägger till ett värde i ett befintligt värde som lagras i ett atomic objekt.
template <class T>
T* atomic_fetch_add_explicit(
volatile atomic<T*>* Atom,
ptrdiff_t Value,
memory_order Order) noexcept;
template <class T>
T* atomic_fetch_add_explicit(
atomic<T*>* Atom,
ptrdiff_t Value,
memory_order Order) noexcept;
Parameterar
Atom
En pekare till ett atomic objekt som lagrar en pekare för att skriva T.
Value
Ett värde av typen ptrdiff_t.
Returvärde
Värdet för pekaren som objektet innehåller atomic omedelbart innan åtgärden utfördes.
Anmärkningar
Funktionen atomic_fetch_add_explicit utför en läs-ändra-skriv-åtgärd för att atomiskt lägga Value till det lagrade värdet i Atom, inom de memory_order begränsningar som anges av Order.
När atomtypen är atomic_address, har typen Value och åtgärden behandlar den lagrade pekaren som en ptrdiff_tchar * .
Den här åtgärden är också överbelastad för integraltyper:
integral atomic_fetch_add_explicit(
volatile atomic-integral* Atom,
integral Value,
memory_order Order) noexcept;
integral atomic_fetch_add_explicit(
atomic-integral* Atom,
integral Value,
memory_order Order) noexcept;
atomic_fetch_and
Utför lite på ett värde och ett befintligt & värde som lagras i ett atomic objekt.
template <class T>
inline T atomic_fetch_and(volatile atomic<T>* Atom, T Value) noexcept;
template <class T>
inline T atomic_fetch_and(volatile atomic<T>* Atom, T Value) noexcept;
Parameterar
Atom
En pekare till ett atomic objekt som lagrar ett värde av typen T.
Value
Ett värde av typen T.
Returvärde
Värdet som objektet innehåller atomic omedelbart innan åtgärden utfördes.
Anmärkningar
Funktionen atomic_fetch_and utför en läs-ändra-skriv-åtgärd för att ersätta det lagrade värdet för med en bitvis Atom av & och det aktuella värdet som lagras i Value, med hjälp av Atom villkoretmemory_order.memory_order_seq_cst.
atomic_fetch_and_explicit
Utför ett bitvis av ett värde och ett befintligt & värde som lagras i ett atomic objekt.
template <class T>
inline T atomic_fetch_and_explicit(
volatile atomic<T>* Atom,
T Value,
memory_order Order) noexcept;
template <class T>
inline T atomic_fetch_and_explicit(
volatile atomic<T>* Atom,
T Value,
memory_order Order) noexcept;
Parameterar
Atom
En pekare till ett atomic objekt som lagrar ett värde av typen T.
Value
Ett värde av typen T.
Order
En memory_order.
Returvärde
Värdet som objektet innehåller atomic omedelbart innan åtgärden utfördes.
Anmärkningar
Funktionen atomic_fetch_and_explicit utför en läs-ändra-skriv-åtgärd för att ersätta det lagrade värdet Atom för med en bitvis & av Value och det aktuella värdet som lagras i Atom, inom de minnesbegränsningar som anges av Order.
atomic_fetch_or
Utför lite på ett värde och ett befintligt or värde som lagras i ett atomic objekt.
template <class T>
inline T atomic_fetch_or (volatile atomic<T>* Atom, T Value) noexcept;
template <class T>
inline T atomic_fetch_or (volatile atomic<T>* Atom, T Value) noexcept;
Parameterar
Atom
En pekare till ett atomic objekt som lagrar ett värde av typen T.
Value
Ett värde av typen T.
Returvärde
Värdet som objektet innehåller atomic omedelbart innan åtgärden utfördes.
Anmärkningar
Funktionen atomic_fetch_or utför en läs-ändra-skriv-åtgärd för att ersätta det lagrade värdet för med en bitvis Atom av or och det aktuella värdet som lagras i Value, med hjälp av Atommemory_order.memory_order_seq_cst.
atomic_fetch_or_explicit
Utför lite på ett värde och ett befintligt or värde som lagras i ett atomic objekt.
template <class T>
inline T atomic_fetch_or_explicit(
volatile atomic<T>* Atom,
T Value,
memory_order Order) noexcept;
template <class T>
inline T atomic_fetch_or_explicit(
volatile atomic<T>* Atom,
T Value,
memory_order Order) noexcept;
Parameterar
Atom
En pekare till ett atomic objekt som lagrar ett värde av typen T.
Value
Ett värde av typen T.
Order
En memory_order.
Returvärde
Värdet som objektet innehåller atomic omedelbart innan åtgärden utfördes.
Anmärkningar
Funktionen atomic_fetch_or_explicit utför en läs-ändra-skriv-åtgärd för att ersätta det lagrade värdet Atom för med en bitvis or av Value och det aktuella värdet som lagras i Atom, inom de memory_order begränsningar som anges av Order.
atomic_fetch_sub
Subtraherar ett värde från ett befintligt värde som lagras i ett atomic objekt.
template <class T>
T* atomic_fetch_sub(
volatile atomic<T*>* Atom,
ptrdiff_t Value) noexcept;
template <class T>
T* atomic_fetch_sub(
atomic<T*>* Atom,
ptrdiff_t Value) noexcept;
Parameterar
Atom
En pekare till ett atomic objekt som lagrar en pekare för att skriva T.
Value
Ett värde av typen ptrdiff_t.
Returvärde
Värdet för pekaren som objektet innehåller atomic omedelbart innan åtgärden utfördes.
Anmärkningar
Funktionen atomic_fetch_sub utför en läs-ändra-skriv-åtgärd för att atomiskt subtrahera Value från det lagrade värdet i Atom, med hjälp av villkoret memory_order.memory_order_seq_cst .
När atomtypen är atomic_address, har typen Value och åtgärden behandlar den lagrade pekaren som en ptrdiff_tchar * .
Den här åtgärden är också överbelastad för integraltyper:
integral atomic_fetch_sub(volatile atomic-integral* Atom, integral Value) noexcept;
integral atomic_fetch_sub(atomic-integral* Atom, integral Value) noexcept;
atomic_fetch_sub_explicit
Subtraherar ett värde från ett befintligt värde som lagras i ett atomic objekt.
template <class T>
T* atomic_fetch_sub_explicit(
volatile atomic<T*>* Atom,
ptrdiff_t Value,
memory_order Order) noexcept;
template <class T>
T* atomic_fetch_sub_explicit(
atomic<T*>* Atom,
ptrdiff_t Value, memory_order Order) noexcept;
Parameterar
Atom
En pekare till ett atomic objekt som lagrar en pekare för att skriva T.
Value
Ett värde av typen ptrdiff_t.
Returvärde
Värdet för pekaren som objektet innehåller atomic omedelbart innan åtgärden utfördes.
Anmärkningar
Funktionen atomic_fetch_sub_explicit utför en läs-ändra-skriv-åtgärd för att atomiskt subtrahera Value från det lagrade värdet i Atom, inom de memory_order begränsningar som anges av Order.
När atomtypen är atomic_address, har typen Value och åtgärden behandlar den lagrade pekaren som en ptrdiff_tchar * .
Den här åtgärden är också överbelastad för integraltyper:
integral atomic_fetch_sub_explicit(
volatile atomic-integral* Atom,
integral Value,
memory_order Order) noexcept;
integral atomic_fetch_sub_explicit(
atomic-integral* Atom,
integral Value,
memory_order Order) noexcept;
atomic_fetch_xor
Utför lite på ett värde och ett befintligt exclusive or värde som lagras i ett atomic objekt.
template <class T>
inline T atomic_fetch_xor(volatile atomic<T>* Atom, T Value) noexcept;
template <class T>
inline T atomic_fetch_xor(volatile atomic<T>* Atom, T Value) noexcept;
Parameterar
Atom
En pekare till ett atomic objekt som lagrar ett värde av typen T.
Value
Ett värde av typen T.
Returvärde
Värdet som objektet innehåller atomic omedelbart innan åtgärden utfördes.
Anmärkningar
Funktionen atomic_fetch_xor utför en läs-ändra-skriv-åtgärd för att ersätta det lagrade värdet för med en bitvis Atom av exclusive or och det aktuella värdet som lagras i Value, med hjälp av Atommemory_order.memory_order_seq_cst.
atomic_fetch_xor_explicit
Utför lite på ett värde och ett befintligt exclusive or värde som lagras i ett atomic objekt.
template <class T>
inline T atomic_fetch_xor_explicit(
volatile atomic<T>* Atom,
T Value,
memory_order Order) noexcept;
template <class T>
inline T atomic_fetch_xor_explicit(
volatile atomic<T>* Atom,
T Value,
memory_order Order) noexcept;
Parameterar
Atom
En pekare till ett atomic objekt som lagrar ett värde av typen T.
Value
Ett värde av typen T.
Order
En memory_order.
Returvärde
Värdet som objektet innehåller atomic omedelbart innan åtgärden utfördes.
Anmärkningar
Funktionen atomic_fetch_xor_explicit utför en läs-ändra-skriv-åtgärd för att ersätta det lagrade värdet Atom för med en bitvis exclusive or av Value och det aktuella värdet som lagras i Atom, inom de memory_order begränsningar som anges av Order.
atomic_flag_clear
bool Anger flaggan i ett atomic_flag objekt till false, inom memory_order.memory_order_seq_cst.
inline void atomic_flag_clear(volatile atomic_flag* Flag) noexcept;
inline void atomic_flag_clear(atomic_flag* Flag) noexcept;
Parameterar
Flag
En pekare till ett atomic_flag objekt.
atomic_flag_clear_explicit
bool Anger flaggan i ett atomic_flag objekt till false, inom de angivna memory_order begränsningarna.
inline void atomic_flag_clear_explicit(volatile atomic_flag* Flag, memory_order Order) noexcept;
inline void atomic_flag_clear_explicit(atomic_flag* Flag, memory_order Order) noexcept;
Parameterar
Flag
En pekare till ett atomic_flag objekt.
Order
En memory_order.
atomic_flag_test_and_set
bool Anger flaggan i ett atomic_flag objekt till true, inom begränsningarna för memory_order.memory_order_seq_cst.
inline bool atomic_flag_test_and_set(volatile atomic_flag* Flag) noexcept;
inline bool atomic_flag_test_and_set(atomic_flag* Flag) noexcept;
Parameterar
Flag
En pekare till ett atomic_flag objekt.
Returvärde
Det ursprungliga värdet för Flag.
atomic_flag_test_and_set_explicit
bool Anger flaggan i ett atomic_flag objekt till true, inom de angivna memory_order begränsningarna.
inline bool atomic_flag_test_and_set_explicit(volatile atomic_flag* Flag, memory_order Order) noexcept;
inline bool atomic_flag_test_and_set_explicit(atomic_flag* Flag, memory_order Order) noexcept;
Parameterar
Flag
En pekare till ett atomic_flag objekt.
Order
En memory_order.
Returvärde
Det ursprungliga värdet för Flag.
atomic_init
Anger det lagrade värdet i ett atomic objekt.
template <class Ty>
inline void atomic_init(volatile atomic<Ty>* Atom, Ty Value) noexcept;
template <class Ty>
inline void atomic_init(atomic<Ty>* Atom, Ty Value) noexcept;
Parameterar
Atom
En pekare till ett atomic objekt som lagrar ett värde av typen Ty.
Value
Ett värde av typen Ty.
Anmärkningar
atomic_init är inte en atomisk åtgärd. Det är inte trådsäkert.
atomic_is_lock_free
Anger om atomiska åtgärder på ett atomic objekt är låsfria.
template <class T>
inline bool atomic_is_lock_free(const volatile atomic<T>* Atom) noexcept;
template <class T>
inline bool atomic_is_lock_free(const atomic<T>* Atom) noexcept;
Parameterar
Atom
En pekare till ett atomic objekt som lagrar ett värde av typen T.
Returvärde
trueom atomiska åtgärder på Atom är låsfria, annars . false
Anmärkningar
En atomisk typ är låsfri om inga atomiska åtgärder på den typen använder lås. Om den här funktionen returnerar trueär typen säker att använda i signalhanterare.
atomic_load
Hämtar det lagrade värdet i ett atomic objekt.
template <class Ty>
inline Ty atomic_load(const volatile atomic<Ty>* Atom) noexcept;
template <class Ty>
inline Ty atomic_load(const atomic<Ty>* Atom) noexcept;
Parameterar
Atom
En pekare till ett atomic objekt som innehåller ett värde av typen Ty.
Returvärde
Det hämtade värdet som lagras i Atom.
Anmärkningar
atomic_load använder memory_order.memory_order_seq_cstimplicit .
atomic_load_explicit
Hämtar det lagrade värdet i ett atomic objekt inom en angiven memory_order.
template <class Ty>
inline Ty atomic_load_explicit(const volatile atomic<Ty>* Atom, memory_order Order) noexcept;
template <class Ty>
inline Ty atomic_load_explicit(const atomic<Ty>* Atom, memory_order Order) noexcept;
Parameterar
Atom
En pekare till ett atomic objekt som innehåller ett värde av typen Ty.
Order
En memory_order. Använd inte memory_order_release eller memory_order_acq_rel.
Returvärde
Det hämtade värdet som lagras i Atom.
atomic_signal_fence
Fungerar som ett staket – en minnessynkroniseringsprimation som framtvingar ordning mellan belastnings-/lagringsåtgärder – mellan andra stängsel i en anropstråd som har signalhanterare som körs i samma tråd.
inline void atomic_signal_fence(memory_order Order) noexcept;
Parameterar
Order
En begränsning för minnesordning som avgör stängseltyp.
Anmärkningar
Argumentet Order bestämmer stängseltyp.
| Värde | Beskrivning |
|---|---|
memory_order_relaxed |
Stängslet har ingen effekt. |
memory_order_consume |
Staketet är ett stängsel. |
memory_order_acquire |
Staketet är ett stängsel. |
memory_order_release |
Staketet är ett frisläppningsstängsel. |
memory_order_acq_rel |
Staketet är både ett stängsel och ett frisläppningsstängsel. |
memory_order_seq_cst |
Staketet är både ett stängsel och ett frisläppningsstängsel och är sekventiellt konsekvent. |
atomic_store
Atomiskt lagrar ett värde i ett atomic objekt.
template <class Ty>
inline Ty atomic_store_explicit(const volatile atomic<Ty>* Atom, Ty Value) noexcept;
template <class Ty>
inline Ty atomic_store_explicit(const atomic<Ty>* Atom, T Value) noexcept;
Parameterar
Atom
En pekare till ett atomic objekt som innehåller ett värde av typen Ty.
Value
Ett värde av typen Ty.
Anmärkningar
atomic_store lagrar Value i objektet som pekas på av Atom, inom villkoret memory_order.memory_order_seq_cst .
atomic_store_explicit
Atomiskt lagrar ett värde i ett atomic objekt.
template <class Ty>
inline Ty atomic_store_explicit(
const volatile atomic<Ty>* Atom,
Ty Value,
memory_order Order) noexcept;
template <class Ty>
inline Ty atomic_store_explicit(
const atomic<Ty>* Atom,
T Value,
memory_order Order) noexcept;
Parameterar
Atom
En pekare till ett atomic objekt som innehåller ett värde av typen Ty.
Value
Ett värde av typen Ty.
Order
En memory_order. Använd inte memory_order_consume, memory_order_acquireeller memory_order_acq_rel.
Anmärkningar
atomic_store lagrar Value i objektet som pekas på av Atom, inom memory_order det som anges av Order.
atomic_thread_fence
Fungerar som ett staket – en primitiv minnessynkronisering som framtvingar ordning mellan belastnings-/lagringsåtgärder – utan en associerad atomisk åtgärd.
inline void atomic_thread_fence(memory_order Order) noexcept;
Parameterar
Order
En begränsning för minnesordning som avgör stängseltyp.
Anmärkningar
Argumentet Order bestämmer stängseltyp.
| Värde | Beskrivning |
|---|---|
memory_order_relaxed |
Stängslet har ingen effekt. |
memory_order_consume |
Staketet är ett stängsel. |
memory_order_acquire |
Staketet är ett stängsel. |
memory_order_release |
Staketet är ett frisläppningsstängsel. |
memory_order_acq_rel |
Staketet är både ett stängsel och ett frisläppningsstängsel. |
memory_order_seq_cst |
Staketet är både ett stängsel och ett frisläppningsstängsel och är sekventiellt konsekvent. |
kill_dependency
Tar bort ett beroende.
template <class Ty>
Ty kill_dependency(Ty Arg) noexcept;
Parameterar
Arg
Ett värde av typen Ty.
Returvärde
Returvärdet är Arg. Utvärderingen av Arg har inget beroende av funktionsanropet. Genom att bryta en möjlig beroendekedja kan funktionen tillåta kompilatorn att generera effektivare kod.