Udostępnij przez


<atomic>, funkcje

atomic_compare_exchange_strong
atomic_compare_exchange_strong_explicit
atomic_compare_exchange_weak
atomic_compare_exchange_weak_explicit
atomic_exchange
atomic_exchange_explicit
atomic_fetch_add
atomic_fetch_add_explicit
atomic_fetch_and
atomic_fetch_and_explicit
atomic_fetch_or
atomic_fetch_or_explicit
atomic_fetch_sub
atomic_fetch_sub_explicit
atomic_fetch_xor
atomic_fetch_xor_explicit
atomic_flag_clear
atomic_flag_clear_explicit
atomic_flag_test_and_set
atomic_flag_test_and_set_explicit
atomic_init
atomic_is_lock_free
atomic_load
atomic_load_explicit
atomic_signal_fence
atomic_store
atomic_store_explicit
atomic_thread_fence
kill_dependency

atomic_compare_exchange_strong

Wykonuje niepodzielne operacje porównywania i wymiany.

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;

Parametry

Atom
Wskaźnik do atomic obiektu, który przechowuje wartość typu Ty.

Exp
Wskaźnik do wartości typu Ty.

Value
Wartość typu Ty.

Wartość zwracana

true jeśli wartości są równe, w przeciwnym razie false.

Uwagi

Ta metoda wykonuje niepodzielne operacje porównywania i wymiany przy użyciu niejawnych memory_order.memory_order_seq_cst argumentów. W celu uzyskania więcej informacji, zobacz następujący temat: atomic_compare_exchange_strong_explicit.

atomic_compare_exchange_strong_explicit

Wykonuje operację atomic compare and exchange .

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;

Parametry

Atom
Wskaźnik do atomic obiektu, który przechowuje wartość typu Ty.

Exp
Wskaźnik do wartości typu Ty.

Value
Wartość typu Ty.

Order1
Pierwszy memory_order argument.

Order2
Drugi memory_order argument. Wartość Order2 nie może być memory_order_release lub memory_order_acq_rel, nie może być silniejsza niż wartość Order1.

Wartość zwracana

true jeśli wartości są równe, w przeciwnym razie false.

Uwagi

Element atomic compare and exchange operation porównuje wartość przechowywaną w obiekcie wskazywaną przez Atom wartość wskazywaną przez wartość wskazywaną przez Expwartość . Jeśli wartości są równe, wartość przechowywana w obiekcie wskazywanym Atom przez element jest zastępowana Value za pomocą operacji read-modify-write i stosowania ograniczeń kolejności pamięci określonych przez Order1. Jeśli wartości nie są równe, operacja zastępuje wartość, która jest wskazywana Exp przez wartość przechowywaną w obiekcie wskazywaną przez Atom i stosuje ograniczenia kolejności pamięci określone przez Order2.

atomic_compare_exchange_weak

Wykonuje słabą operację porównywania niepodzielnego i wymiany .

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;

Parametry

Atom
Wskaźnik do atomic obiektu, który przechowuje wartość typu Ty.

Exp
Wskaźnik do wartości typu Ty.

Value
Wartość typu Ty.

Wartość zwracana

true jeśli wartości są równe, w przeciwnym razie false.

Uwagi

Ta metoda wykonuje słabą operację porównania niepodzielnego i wymiany, która ma niejawne memory_order.memory_order_seq_cst argumenty. W celu uzyskania więcej informacji, zobacz następujący temat: atomic_compare_exchange_weak_explicit.

atomic_compare_exchange_weak_explicit

Wykonuje słabą operację porównywania niepodzielnego i wymiany .

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;

Parametry

Atom
Wskaźnik do atomic obiektu, który przechowuje wartość typu Ty.

Exp
Wskaźnik do wartości typu Ty.

Value
Wartość typu Ty.

Order1
Pierwszy memory_order argument.

Order2
Drugi memory_order argument. Wartość Order2 nie może być memory_order_release wartością lub memory_order_acq_rel, ani nie może być silniejsza Order1niż wartość .

Wartość zwracana

true jeśli wartości są równe, w przeciwnym razie false.

Uwagi

Zarówno silne, jak i słabe smaki atomic compare and exchange operation gwarancji, że nie przechowują nowej wartości, jeśli oczekiwane i bieżące wartości nie są równe. Silny smak gwarantuje, że będzie przechowywać nową wartość, jeśli oczekiwane i bieżące wartości są równe. Słaby smak może czasami zwracać false i nie przechowywać nowej wartości, nawet jeśli bieżące i oczekiwane wartości są równe. Innymi słowy, funkcja zwróci falsewartość , ale późniejsze badanie oczekiwanej wartości może ujawnić, że nie uległa zmianie, a zatem powinna być porównywana jako równa.

atomic_exchange

Używa Value metody , aby zastąpić przechowywaną wartość 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;

Parametry

Atom
Wskaźnik do atomic obiektu, który przechowuje wartość typu Ty.

Value
Wartość typu Ty.

Wartość zwracana

Przechowywana Atom wartość przed wymianą.

Uwagi

Funkcja atomic_exchange wykonuje operację read-modify-write w celu wymiany wartości przechowywanej w AtomValueprogramie za pomocą polecenia memory_order.memory_order_seq_cst.

atomic_exchange_explicit

Zamienia przechowywaną wartość elementu AtomValuena .

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;

Parametry

Atom
Wskaźnik do atomic obiektu, który przechowuje wartość typu Ty.

Value
Wartość typu Ty.

Order
Klasa memory_order.

Wartość zwracana

Przechowywana Atom wartość przed wymianą.

Uwagi

Funkcja atomic_exchange_explicit wykonuje operację read-modify-write w celu wymiany wartości przechowywanej w obiekcie w AtomValueramach ograniczeń pamięci określonych przez Orderprogram .

atomic_fetch_add

Dodaje wartość do istniejącej wartości przechowywanej atomic w obiekcie.

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;

Parametry

Atom
Wskaźnik do atomic obiektu, który przechowuje wskaźnik, aby wpisać T.

Value
Wartość typu ptrdiff_t.

Wartość zwracana

Wartość wskaźnika zawartego atomic przez obiekt bezpośrednio przed wykonaniem operacji.

Uwagi

Funkcja atomic_fetch_add wykonuje operację read-modify-write w celu niepodzielnego dodania Value do przechowywanej wartości w Atomelemecie memory_order.memory_order_seq_cst , przy użyciu ograniczenia.

Gdy typ niepodzielnego to atomic_address, ma typptrdiff_t, Value a operacja traktuje przechowywany wskaźnik jako char *.

Ta operacja jest również przeciążona dla typów całkowitych:

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

Dodaje wartość do istniejącej wartości przechowywanej atomic w obiekcie.

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;

Parametry

Atom
Wskaźnik do atomic obiektu, który przechowuje wskaźnik, aby wpisać T.

Value
Wartość typu ptrdiff_t.

Wartość zwracana

Wartość wskaźnika zawartego atomic przez obiekt bezpośrednio przed wykonaniem operacji.

Uwagi

Funkcja atomic_fetch_add_explicit wykonuje operację read-modify-write w celu niepodzielnego dodania Value do przechowywanej wartości w programie w Atomramach memory_order ograniczeń określonych przez Orderprogram .

Gdy typ niepodzielnego to atomic_address, ma typptrdiff_t, Value a operacja traktuje przechowywany wskaźnik jako char *.

Ta operacja jest również przeciążona dla typów całkowitych:

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

Wykonuje bitowo & na wartości i istniejącej wartości przechowywanej atomic w obiekcie.

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;

Parametry

Atom
Wskaźnik do atomic obiektu, który przechowuje wartość typu T.

Value
Wartość typu T.

Wartość zwracana

Wartość zawarta atomic przez obiekt bezpośrednio przed wykonaniem operacji.

Uwagi

Funkcja atomic_fetch_and wykonuje operację read-modify-write, aby zastąpić przechowywaną wartość z bitową &Value wartością Atom i bieżącą wartością przechowywaną w Atomelemencie memory_order.memory_order_seq_cst , przy użyciu ograniczenia.

atomic_fetch_and_explicit

Wykonuje bitową & wartość i istniejącą wartość przechowywaną atomic w obiekcie.

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;

Parametry

Atom
Wskaźnik do atomic obiektu, który przechowuje wartość typu T.

Value
Wartość typu T.

Order
Klasa memory_order.

Wartość zwracana

Wartość zawarta atomic przez obiekt bezpośrednio przed wykonaniem operacji.

Uwagi

Funkcja atomic_fetch_and_explicit wykonuje operację read-modify-write, aby zastąpić przechowywaną wartość z bitową &Value wartością Atom i bieżącą wartością przechowywaną w elemencie w Atomramach ograniczeń pamięci określonych przez Order.

atomic_fetch_or

Wykonuje bitowo or na wartości i istniejącej wartości przechowywanej atomic w obiekcie.

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;

Parametry

Atom
Wskaźnik do atomic obiektu, który przechowuje wartość typu T.

Value
Wartość typu T.

Wartość zwracana

Wartość zawarta atomic przez obiekt bezpośrednio przed wykonaniem operacji.

Uwagi

Funkcja atomic_fetch_or wykonuje operację read-modify-write, aby zastąpić przechowywaną wartość Atom parametru bitowo orValue wartością i bieżącą wartością przechowywaną w Atomelemencie memory_order.memory_order_seq_cst, przy użyciu elementu .

atomic_fetch_or_explicit

Wykonuje bitowo or na wartości i istniejącej wartości przechowywanej atomic w obiekcie.

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;

Parametry

Atom
Wskaźnik do atomic obiektu, który przechowuje wartość typu T.

Value
Wartość typu T.

Order
Klasa memory_order.

Wartość zwracana

Wartość zawarta atomic przez obiekt bezpośrednio przed wykonaniem operacji.

Uwagi

Funkcja atomic_fetch_or_explicit wykonuje operację read-modify-write, aby zastąpić przechowywaną wartość z bitową Valueor wartością Atom i bieżącą wartością przechowywaną w elemencie , Atomw memory_order ramach ograniczeń określonych przez Order.

atomic_fetch_sub

Odejmuje wartość z istniejącej wartości przechowywanej atomic w obiekcie.

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;

Parametry

Atom
Wskaźnik do atomic obiektu, który przechowuje wskaźnik, aby wpisać T.

Value
Wartość typu ptrdiff_t.

Wartość zwracana

Wartość wskaźnika zawartego atomic przez obiekt bezpośrednio przed wykonaniem operacji.

Uwagi

Funkcja atomic_fetch_sub wykonuje operację read-modify-write w celu niepodzielnego odejmowania Value od przechowywanej wartości w Atomelemecie memory_order.memory_order_seq_cst , przy użyciu ograniczenia.

Gdy typ niepodzielnego to atomic_address, ma typptrdiff_t, Value a operacja traktuje przechowywany wskaźnik jako char *.

Ta operacja jest również przeciążona dla typów całkowitych:

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

Odejmuje wartość z istniejącej wartości przechowywanej atomic w obiekcie.

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;

Parametry

Atom
Wskaźnik do atomic obiektu, który przechowuje wskaźnik, aby wpisać T.

Value
Wartość typu ptrdiff_t.

Wartość zwracana

Wartość wskaźnika zawartego atomic przez obiekt bezpośrednio przed wykonaniem operacji.

Uwagi

Funkcja atomic_fetch_sub_explicit wykonuje operację read-modify-write w celu niepodzielnego odejmowania Value z przechowywanej wartości w programie w Atomramach memory_order ograniczeń określonych przez Orderprogram .

Gdy typ niepodzielnego to atomic_address, ma typptrdiff_t, Value a operacja traktuje przechowywany wskaźnik jako char *.

Ta operacja jest również przeciążona dla typów całkowitych:

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

Wykonuje bitowo exclusive or na wartości i istniejącej wartości przechowywanej atomic w obiekcie.

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;

Parametry

Atom
Wskaźnik do atomic obiektu, który przechowuje wartość typu T.

Value
Wartość typu T.

Wartość zwracana

Wartość zawarta atomic przez obiekt bezpośrednio przed wykonaniem operacji.

Uwagi

Funkcja atomic_fetch_xor wykonuje operację read-modify-write, aby zastąpić przechowywaną wartość Atom parametru bitowo exclusive orValue wartością i bieżącą wartością przechowywaną w Atomelemencie memory_order.memory_order_seq_cst, przy użyciu elementu .

atomic_fetch_xor_explicit

Wykonuje bitowo exclusive or na wartości i istniejącej wartości przechowywanej atomic w obiekcie.

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;

Parametry

Atom
Wskaźnik do atomic obiektu, który przechowuje wartość typu T.

Value
Wartość typu T.

Order
Klasa memory_order.

Wartość zwracana

Wartość zawarta atomic przez obiekt bezpośrednio przed wykonaniem operacji.

Uwagi

Funkcja atomic_fetch_xor_explicit wykonuje operację read-modify-write, aby zastąpić przechowywaną wartość z Atom bitową exclusive orValue wartością i bieżącą wartością przechowywaną w elemencie , Atomw memory_order ramach ograniczeń określonych przez Orderelement .

atomic_flag_clear

Ustawia flagę boolatomic_flag w obiekcie na false, w obiekcie 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;

Parametry

Flag
Wskaźnik do atomic_flag obiektu.

atomic_flag_clear_explicit

Ustawia flagę boolatomic_flag w obiekcie na false, w ramach określonych memory_order ograniczeń.

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;

Parametry

Flag
Wskaźnik do atomic_flag obiektu.

Order
Klasa memory_order.

atomic_flag_test_and_set

Ustawia flagę boolatomic_flag w obiekcie na true, w ramach ograniczeń obiektu 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;

Parametry

Flag
Wskaźnik do atomic_flag obiektu.

Wartość zwracana

Początkowa wartość Flag.

atomic_flag_test_and_set_explicit

Ustawia flagę boolatomic_flag w obiekcie na true, w ramach określonych memory_order ograniczeń.

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;

Parametry

Flag
Wskaźnik do atomic_flag obiektu.

Order
Klasa memory_order.

Wartość zwracana

Początkowa wartość Flag.

atomic_init

Ustawia przechowywaną atomic wartość w obiekcie.

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;

Parametry

Atom
Wskaźnik do atomic obiektu, który przechowuje wartość typu Ty.

Value
Wartość typu Ty.

Uwagi

atomic_init nie jest operacją niepodzielna. Nie jest bezpieczny wątkowo.

atomic_is_lock_free

Określa, czy operacje niepodzielne na atomic obiekcie są wolne od blokady.

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;

Parametry

Atom
Wskaźnik do atomic obiektu, który przechowuje wartość typu T.

Wartość zwracana

true jeśli operacje Atom niepodzielne są wolne od blokady; w przeciwnym razie false.

Uwagi

Typ niepodzielne jest wolny od blokady, jeśli nie ma żadnych operacji niepodzielnych na tym typie, używają blokad. Jeśli ta funkcja zwróci truewartość , typ jest bezpieczny do użycia w programach obsługi sygnałów.

atomic_load

Pobiera przechowywaną atomic wartość w obiekcie.

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;

Parametry

Atom
Wskaźnik do atomic obiektu, który zawiera wartość typu Ty.

Wartość zwracana

Pobrana wartość przechowywana w pliku Atom.

Uwagi

atomic_load niejawnie używa metody memory_order.memory_order_seq_cst.

atomic_load_explicit

Pobiera przechowywaną atomic wartość w obiekcie w określonym memory_orderobiekcie .

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;

Parametry

Atom
Wskaźnik do atomic obiektu, który zawiera wartość typu Ty.

Order
Klasa memory_order. Nie używaj ani memory_order_releasememory_order_acq_rel.

Wartość zwracana

Pobrana wartość przechowywana w pliku Atom.

atomic_signal_fence

Działa jako ogrodzenie — typ pierwotny synchronizacji pamięci, który wymusza kolejność między operacjami ładowania/magazynu — między innymi ogrodzeniami w wątku wywołującym, który ma programy obsługi sygnałów wykonywane w tym samym wątku.

inline void atomic_signal_fence(memory_order Order) noexcept;

Parametry

Order
Ograniczenie porządkowania pamięci, które określa typ ogrodzenia.

Uwagi

Order Argument określa typ ogrodzenia.

Wartość Opis
memory_order_relaxed Ogrodzenie nie ma wpływu.
memory_order_consume Ogrodzenie to ogrodzenie nabyte.
memory_order_acquire Ogrodzenie to ogrodzenie nabyte.
memory_order_release Ogrodzenie jest ogrodzeniem zwalniania.
memory_order_acq_rel Ogrodzenie jest zarówno ogrodzeniem nabytym, jak i ogrodzeniem zwalniania.
memory_order_seq_cst Ogrodzenie jest zarówno ogrodzeniem nabytym, jak i ogrodzeniem zwalniania, i jest sekwencyjnie spójne.

atomic_store

Niepodzielne przechowywanie wartości w atomic obiekcie.

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;

Parametry

Atom
Wskaźnik do atomic obiektu, który zawiera wartość typu Ty.

Value
Wartość typu Ty.

Uwagi

atomic_storeValue przechowuje w obiekcie, który jest wskazywany przez Atom, w memory_order.memory_order_seq_cst ramach ograniczenia.

atomic_store_explicit

Niepodzielne przechowywanie wartości w atomic obiekcie.

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;

Parametry

Atom
Wskaźnik do atomic obiektu, który zawiera wartość typu Ty.

Value
Wartość typu Ty.

Order
Klasa memory_order. Nie należy używać memory_order_consume, memory_order_acquirelub memory_order_acq_rel.

Uwagi

atomic_storeValue przechowuje w obiekcie, który jest wskazywany przez Atom, w obiekcie memory_order określonym przez Order.

atomic_thread_fence

Działa jako ogrodzenie — typ pierwotny synchronizacji pamięci, który wymusza kolejność między operacjami ładowania/magazynu — bez skojarzonej operacji niepodzielnej.

inline void atomic_thread_fence(memory_order Order) noexcept;

Parametry

Order
Ograniczenie porządkowania pamięci, które określa typ ogrodzenia.

Uwagi

Order Argument określa typ ogrodzenia.

Wartość Opis
memory_order_relaxed Ogrodzenie nie ma wpływu.
memory_order_consume Ogrodzenie to ogrodzenie nabyte.
memory_order_acquire Ogrodzenie to ogrodzenie nabyte.
memory_order_release Ogrodzenie jest ogrodzeniem zwalniania.
memory_order_acq_rel Ogrodzenie jest zarówno ogrodzeniem nabytym, jak i ogrodzeniem zwalniania.
memory_order_seq_cst Ogrodzenie jest zarówno ogrodzeniem nabytym, jak i ogrodzeniem zwalniania, i jest sekwencyjnie spójne.

kill_dependency

Usuwa zależność.

template <class Ty>
Ty kill_dependency(Ty Arg) noexcept;

Parametry

Arg
Wartość typu Ty.

Wartość zwracana

Zwracana wartość to Arg. Ocena Arg elementu nie prowadzi zależności do wywołania funkcji. Przerywając możliwy łańcuch zależności, funkcja może zezwolić kompilatorowi na generowanie bardziej wydajnego kodu.

Zobacz też

<atomic>