<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. Aby uzyskać więcej informacji, zobacz 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 Exp
wartość . 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. Aby uzyskać więcej informacji, zobacz 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 Order1
niż 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 false
wartość , 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 Atom
Value
programie za pomocą polecenia memory_order.memory_order_seq_cst
.
atomic_exchange_explicit
Zamienia przechowywaną wartość elementu Atom
Value
na .
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 Atom
Value
ramach ograniczeń pamięci określonych przez Order
program .
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 Atom
elemecie 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 Atom
ramach memory_order
ograniczeń określonych przez Order
program .
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 Atom
elemencie 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 Atom
ramach 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 or
Value
wartością i bieżącą wartością przechowywaną w Atom
elemencie 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ą Value
or
wartością Atom
i bieżącą wartością przechowywaną w elemencie , Atom
w 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 Atom
elemecie 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 Atom
ramach memory_order
ograniczeń określonych przez Order
program .
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 or
Value
wartością i bieżącą wartością przechowywaną w Atom
elemencie 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 or
Value
wartością i bieżącą wartością przechowywaną w elemencie , Atom
w memory_order
ramach ograniczeń określonych przez Order
element .
atomic_flag_clear
Ustawia flagę bool
atomic_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ę bool
atomic_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ę bool
atomic_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ę bool
atomic_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 true
wartość , 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_order
obiekcie .
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_release
memory_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_store
Value
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_acquire
lub memory_order_acq_rel
.
Uwagi
atomic_store
Value
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.