名前空間
変種
操作

atomic_exchange, atomic_exchange_explicit

提供: cppreference.com
< c‎ | atomic
ヘッダ <stdatomic.h> で定義
C atomic_exchange( volatile A* obj, C desired );
(1) (C11およびそれ以降)
C atomic_exchange_explicit( volatile A* obj, C desired, memory_order order );
(2) (C11およびそれ以降)

obj の指す値を desired とアトミックに置き換え、 obj がそれまで保持していた値を返します。 この操作は読み込み-変更-書き込み操作です。 1つめのバージョンは memory_order_seq_cst に従ってメモリアクセスを順序付けし、2つめのバージョンは order に従ってメモリアクセスを順序付けします。

これはすべてのアトミックオブジェクト型 A に対して定義される総称関数です。 引数は非 volatile と volatile (メモリマップド I/O など) 両方のアトミック変数のアドレスを受理するための volatile アトミック型へのポインタです。 CA に対応する非アトミック型です。.

目次

[編集] 引数

obj - 変更するアトミックオブジェクトを指すポインタ
desired - アトミックオブジェクトと置き換える値
order - この操作に対するメモリ同期順序付け。 すべての値が指定できます

[編集] 戻り値

obj の指すアトミックオブジェクトが以前保持していた値。

[編集] 参考文献

  • C11 standard (ISO/IEC 9899:2011):
  • 7.17.7.3 The atomic_exchange generic functions (p: 283)

[編集] 関連項目

アトミックオブジェクトの古い値が期待値と等しければそれを新しい値と交換し、そうでなければ古い値を読み込みます
(関数) [edit]
atomic_exchange, atomic_exchange_explicitC++リファレンス