共用方式為


<atomic>函式</atomic>

 

如需 Visual Studio 2017 的最新文件請參閱 Visual Studio 2017 文件

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 函式

執行不可部分完成的比較和交換作業。

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;

參數

Atom
指標atomic物件,其中儲存型別的值Ty

Exp
指向 Ty 類型值的指標。

Value
型別 Ty 的值。

傳回值

表示數值比較結果的 bool

備註

這個方法會執行不可部分完成的比較和交換作業,使用隱含memory_order_seq_cst memory_order引數。 如需詳細資訊,請參閱atomic_compare_exchange_strong_explicit 函式。

atomic_compare_exchange_strong_explicit 函式

執行不可部分完成的比較和交換作業。

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;

參數

Atom
指標atomic物件,其中儲存型別的值Ty

Exp
指向 Ty 類型值的指標。

Value
型別 Ty 的值。

Order1
第一個memory_order引數。

Order2
第二個memory_order引數。 值Order2不能是memory_order_releasememory_order_acq_rel,它不能比的值更強Order1

傳回值

表示數值比較結果的 bool

備註

不可部分完成的比較和交換作業比較所指向的物件中儲存的值Atom所指向的值Exp。 如果值相等,儲存所指向的物件中的值atom會取代Val使用read-modify-write作業,並套用記憶體排序所指定的條件約束Order1。 如果值不相等,作業將會取代所指向的值Exp儲存所指向的物件中的值與Atom並套用所指定的記憶體順序條件約束Order2

atomic_compare_exchange_weak 函式

執行弱式不可部分完成比較和交換作業。

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;

參數

Atom
指標atomic物件,其中儲存型別的值Ty

Exp
指向 Ty 類型值的指標。

Value
型別 Ty 的值。

傳回值

表示數值比較結果的 bool

備註

這個方法會執行弱式不可部分完成比較和交換作業具有隱含memory_order_seq_cst memory_order引數。 如需詳細資訊,請參閱atomic_compare_exchange_weak_explicit 函式。

atomic_compare_exchange_weak_explicit 函式

執行弱式不可部分完成比較和交換作業。

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;

參數

Atom
指標atomic物件,其中儲存型別的值Ty

Exp
指向 Ty 類型值的指標。

Value
型別 Ty 的值。

Order1
第一個memory_order引數。

Order2
第二個memory_order引數。 值Order2不能是memory_order_releasememory_order_acq_rel,也不可以是威力的值Order1

傳回值

表示數值比較結果的 bool

備註

不可部分完成的比較和交換作業比較所指向的物件中儲存的值Atom所指向的值與Exp。 如果值相等,作業將會取代儲存所指向的物件中的值AtomVal使用read-modify-write作業,並套用所指定的記憶體順序條件約束Order1。 如果值不相等,作業將會取代所指向的值Exp儲存所指向的物件中的值與Atom並套用所指定的記憶體順序條件約束Order2

A弱式不可部分完成的比較和交換作業會執行交換,如果相比較的值是否相等。 不過,如果值不相等,作業來執行交換不保證。

atomic_exchange 函式

使用Value取代預存的值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;

參數

Atom
指標atomic物件,其中儲存型別的值Ty

Value
型別 Ty 的值。

傳回值

交換之前 Atom 的儲存值。

備註

atomic_exchange函數執行read-modify-write交換所儲存的值的作業AtomValue,並使用memory_order_seq_cst memory_order

atomic_exchange_explicit 函式

取代預存的值AtomValue

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;

參數

Atom
指標atomic物件,其中儲存型別的值Ty

Value
型別 Ty 的值。

Order
A memory_order

傳回值

交換之前 Atom 的儲存值。

備註

atomic_exchange_explicit函數執行read-modify-write交換所儲存的值的作業AtomValue,所指定的記憶體條件約束內Order

atomic_fetch_add 函式

將值加入至現有的值會儲存在atomic物件。

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;

參數

Atom
指標atomic物件,其中儲存類型的指標T

Value
型別 ptrdiff_t 的值。

傳回值

執行作業之前,不可部分完成的物件所包含的指標值。

備註

atomic_fetch_add函式會執行read-modify-write作業,將自動新增Value中的預存值Atom,並使用memory_order_seq_cst memory_order條件約束。

當不可部分完成類型是atomic_addressValue類型ptrdiff_t作業視為已儲存的指標和char *

這項作業也是整數類資料類型的多載︰

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 函式

將值加入至現有的值會儲存在atomic物件。

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;

參數

Atom
指標atomic物件,其中儲存類型的指標T

Value
型別 ptrdiff_t 的值。

傳回值

執行作業之前,不可部分完成的物件所包含的指標值。

備註

atomic_fetch_add_explicit函式會執行read-modify-write作業,將自動新增Value中的預存值Atommemory_order所指定的條件約束Order

當不可部分完成類型是atomic_addressValue類型ptrdiff_t作業視為已儲存的指標和char *

這項作業也是整數類資料類型的多載︰

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 函式

執行位元and對某個值和現有的值會儲存在atomic物件。

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

參數

Atom
指標atomic物件,其中儲存型別的值T

Value
型別 T 的值。

傳回值

執行作業之前,不可部分完成的物件所包含的值。

備註

atomic_fetch_and函式會執行read-modify-write作業的預存的值取代Atom的位元andValue和目前值儲存在Atom,並使用memory_order_seq_cst memory_order條件約束。

atomic_fetch_and_explicit 函式

執行位元and值與現有的值會儲存在atomic物件。

template <class T>
inline T atomic_fetch_and_explicit(
    volatile atomic<T>* Atom, T Value,
    memory_order Order);

noexcepttemplate <class T>
inline T atomic_fetch_and_explicit(
    volatile atomic<T>* Atom, T Value,
    memory_order Order);

noexcept

參數

Atom
指標atomic物件,其中儲存型別的值T

Value
型別 T 的值。

Order
A memory_order

傳回值

執行作業之前,不可部分完成的物件所包含的值。

備註

atomic_fetch_and_explicit函式會執行read-modify-write作業的預存的值取代Atom的位元andValue和目前值儲存在Atom,所指定的記憶體條件約束內Order

atomic_fetch_or 函式

執行位元or對某個值和現有的值會儲存在atomic物件。

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

參數

Atom
指標atomic物件,其中儲存型別的值T

Value
型別 T 的值。

傳回值

執行作業之前,不可部分完成的物件所包含的值。

備註

atomic_fetch_or函式會執行read-modify-write作業的預存的值取代Atom的位元orValue和目前值儲存在Atom,並使用memory_order_seq_cst memory_order

atomic_fetch_or_explicit 函式

執行位元or對某個值和現有的值會儲存在atomic物件。

template <class T>
inline T atomic_fetch_or_explicit(
    volatile atomic<T>* Atom, T Value,
    memory_order Order);

noexcepttemplate <class T>
inline T atomic_fetch_or_explicit(
    volatile atomic<T>* Atom, T Value,
    memory_order Order);

noexcept

參數

Atom
指標atomic物件,其中儲存型別的值T

Value
型別 T 的值。

Order
A memory_order

傳回值

執行作業之前,不可部分完成的物件所包含的值。

備註

atomic_fetch_or_explicit函式會執行read-modify-write作業的預存的值取代Atom的位元orValue和目前值儲存在Atommemory_order所指定的條件約束Order

atomic_fetch_sub 函式

從現有值中所儲存的值減去atomic物件。

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;

參數

Atom
指標atomic物件,其中儲存類型的指標T

Value
型別 ptrdiff_t 的值。

傳回值

執行作業之前,不可部分完成的物件所包含的指標值。

備註

atomic_fetch_sub函式會執行read-modify-write作業,以便自動減去Value中儲存的值從Atom,並使用memory_order_seq_cst memory_order條件約束。

當不可部分完成類型是atomic_addressValue類型ptrdiff_t作業視為已儲存的指標和char *

這項作業也是整數類資料類型的多載︰

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 函式

從現有值中所儲存的值減去atomic物件。

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;

參數

Atom
指標atomic物件,其中儲存類型的指標T

Value
型別 ptrdiff_t 的值。

傳回值

執行作業之前,不可部分完成的物件所包含的指標值。

備註

atomic_fetch_sub_explicit函式會執行read-modify-write作業,以便自動減去Value中儲存的值從Atommemory_order所指定的條件約束Order

當不可部分完成類型是atomic_addressValue類型ptrdiff_t作業視為已儲存的指標和char *

這項作業也是整數類資料類型的多載︰

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 函式

執行位元exclusive or對某個值和現有的值會儲存在atomic物件。

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

參數

Atom
指標atomic物件,其中儲存型別的值T

Value
型別 T 的值。

傳回值

執行作業之前,不可部分完成的物件所包含的值。

備註

atomic_fetch_xor函式會執行read-modify-write作業的預存的值取代Atom的位元exclusive orValue和目前值儲存在Atom,並使用memory_order_seq_cst memory_order

atomic_fetch_xor_explicit 函式

執行位元exclusive or對某個值和現有的值會儲存在atomic物件。

template <class T>
inline T atomic_fetch_xor_explicit(
    volatile atomic<T>* Atom, T Value,
    memory_order Order);

noexcepttemplate <class T>
inline T atomic_fetch_xor_explicit(
    volatile atomic<T>* Atom, T Value,
    memory_order Order);

noexcept

參數

Atom
指標atomic物件,其中儲存型別的值T

Value
型別 T 的值。

Order
A memory_order

傳回值

執行作業之前,不可部分完成的物件所包含的值。

備註

atomic_fetch_xor_explicit函式會執行read-modify-write作業的預存的值取代Atom的位元exclusive orValue和目前值儲存在Atommemory_order所指定的條件約束Order

atomic_flag_clear 函式

設定bool加上旗標atomic_flag物件傳遞給falsememory_order_seq_cst memory_order

inline void atomic_flag_clear(volatile atomic_flag* Flag) noexcept;
inline void atomic_flag_clear(atomic_flag* Flag) noexcept;

參數

Flag
指標atomic_flag物件。

atomic_flag_clear_explicit 函式

設定bool加上旗標atomic_flag物件傳遞給false,在指定memory_order條件約束。

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;

參數

Flag
指標atomic_flag物件。

Order
A memory_order

atomic_flag_test_and_set 函式

設定bool加上旗標atomic_flag物件傳遞給true,條件約束內memory_order_seq_cst memory_order

inline bool atomic_flag_test_and_set(
    volatile atomic_flag* Flag,) noexcept;
inline bool atomic_flag_test_and_set(
    atomic_flag* Flag,) noexcept;

參數

Flag
指標atomic_flag物件。

傳回值

初始值Flag

atomic_flag_test_and_set_explicit 函式

設定bool加上旗標atomic_flag物件傳遞給true,在指定memory_order條件約束。

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;

參數

Flag
指標atomic_flag物件。

Order
A memory_order

傳回值

初始值Flag

atomic_init 函式

設定中的預存的值atomic物件。

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;

參數

Atom
指標atomic物件,其中儲存型別的值Ty

Value
型別 Ty 的值。

備註

atomic_init是不可部分完成的作業。 不具備執行緒安全。

atomic_is_lock_free 函式

指定是否在不可部分完成的作業atomic物件

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;

參數

Atom
指標atomic物件,其中儲存型別的值T

傳回值

true如果不可部分完成的作業上Atom無鎖定,否則false

備註

不可部分完成的型別是無鎖定如果沒有不可部分完成的作業,該型別上使用鎖定。 如果此函數會傳回 true,此類型為安全訊號處理常式中使用。

atomic_load 函式

擷取中的預存的值atomic物件。

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;

參數

Atom
指標atomic物件,其中包含型別的值Ty

傳回值

儲存於 Atom 中的擷取值。

備註

atomic_load會隱含地使用memory_order_seq_cst memory_order

atomic_load_explicit 函式

擷取中的預存的值atomic內指定的物件, 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;

參數

Atom
指標atomic物件,其中包含型別的值Ty

Order
A memory_order。 請勿使用memory_order_releasememory_order_acq_rel

傳回值

儲存於 Atom 中的擷取值。

atomic_signal_fence 函式

做為圍欄— 這是記憶體同步處理原始物件的順序載入/儲存作業之間強制執行 — 之間有相同的執行緒中執行的訊號處理常式呼叫的執行緒中其他圍籬。

inline void atomic_signal_fence(memory_order Order) noexcept;

參數

Order
順序會決定圍欄類型的條件約束的記憶體。

備註

Order引數會決定範圍類型。

memory_order_relaxed 範圍有任何作用。
memory_order_consume 範圍是取得範圍。
memory_order_acquire 範圍是取得範圍。
memory_order_release 範圍是版本範圍。
memory_order_acq_rel 取得範圍而發行圍欄圍牆。
memory_order_seq_cst 圍牆取得圍欄和發行建圍牆,而循序一致。

atomic_store 函式

以不可部分完成方式將值儲存在不可部分完成的物件中。

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;

參數

Atom
不可部分完成的物件指標,該物件包含 Ty 類型的值。

Value
型別 Ty 的值。

備註

atomic_store儲存Value所指向的物件中Atommemory_order_seq_cst memory_order條件約束。

atomic_store_explicit 函式

以不可部分完成方式將值儲存在不可部分完成的物件中。

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;

參數

Atom
指標atomic物件,其中包含型別的值Ty

Value
型別 Ty 的值。

Order
A memory_order。 Do not use memory_order_consume, memory_order_acquire, or memory_order_acq_rel.

備註

atomic_store儲存Value所指向的物件中Atommemory_order所指定Order

atomic_thread_fence 函式

做為圍欄— 這是記憶體同步處理原始物件,會強制排序載入/儲存作業之間,沒有相關聯的不可部分完成作業。

inline void atomic_thread_fence(memory_order Order) noexcept;

參數

Order
順序會決定圍欄類型的條件約束的記憶體。

備註

Order引數會決定範圍類型。

memory_order_relaxed 範圍有任何作用。
memory_order_consume 範圍是取得範圍。
memory_order_acquire 範圍是取得範圍。
memory_order_release 範圍是版本範圍。
memory_order_acq_rel 取得範圍而發行圍欄圍牆。
memory_order_seq_cst 圍牆取得圍欄和發行建圍牆,而循序一致。

kill_dependency 函式

移除相依性。

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

參數

Arg
型別 Ty 的值。

傳回值

傳回值是Arg。 評估Arg不執行函式呼叫的相依性。 中斷相依性鏈結,函式可能會讓編譯器產生更有效率的程式碼。

另請參閱

<>>