次の方法で共有


atomic 構造体

Ty 型の格納された値に対して分割不可能な操作を実行するオブジェクトについて記述します。

template <class Ty>
struct atomic;

メンバー

パブリック コンストラクター

名前

説明

atomic::atomic コンストラクター

アトミック オブジェクトを構築します。

パブリック演算子

名前

説明

atomic::operator Ty 演算子

格納されている値を読み取って返します。(atomic::load メソッド)

atomic::operator= 演算子

格納されている値を置き換えるために指定された値を使用します。(atomic::store メソッド)

atomic::operator++ 演算子

格納されている値をインクリメントします。 整数およびポインターの特殊化でのみ使用されます。

atomic::operator+= 演算子

指定した値を格納されている値に加算します。 整数およびポインターの特殊化でのみ使用されます。

atomic::operator-- 演算子

格納されている値をデクリメントします。 整数およびポインターの特殊化でのみ使用されます。

atomic::operator-= 演算子

指定した値を格納されている値から減算します。 整数およびポインターの特殊化でのみ使用されます。

atomic::operator&= 演算子

指定されている値と格納されている値に対して、ビットごとの and を実行します。 整数の特殊化でのみ使用されます。

atomic::operator|= 演算子

指定されている値と格納されている値に対して、ビットごとの or を実行します。 整数の特殊化でのみ使用されます。

atomic::operator^= 演算子

指定されている値と格納されている値に対して、ビットごとの exclusive or を実行します。 整数の特殊化でのみ使用されます。

パブリック メソッド

名前

説明

atomic::compare_exchange_strong メソッド

this に対して atomic_compare_and_exchange 操作を実行し、その結果を返します。

atomic::compare_exchange_weak メソッド

this に対して weak_atomic_compare_and_exchange 操作を実行し、その結果を返します。

atomic::fetch_add メソッド

指定した値を格納されている値に加算します。

atomic::fetch_and メソッド

指定されている値と格納されている値に対して、ビットごとの and を実行します。

atomic::fetch_or メソッド

指定されている値と格納されている値に対して、ビットごとの or を実行します。

atomic::fetch_sub メソッド

指定した値を格納されている値から減算します。

atomic::fetch_xor メソッド

指定されている値と格納されている値に対して、ビットごとの exclusive or を実行します。

atomic::is_lock_free メソッド

this に対する分割不可能な操作がロック制御不要であるかどうかを指定します。 その型に対する分割不可能な操作においてロックが使用される場合、atomic 型はロック制御不要になります。

atomic::load メソッド

格納されている値を読み取って返します。

atomic::store メソッド

格納されている値を置き換えるために指定された値を使用します。

解説

Ty 型は、普通にコピー可能である必要があります。 つまり、memcpy を使用してそのバイトをコピーした場合は、元のオブジェクトに等しい有効な Ty オブジェクトが生成される必要があります。 compare_exchange_weak および compare_exchange_strong のメンバー関数は、memcmp を使用して 2 つの Ty 値が等しいかどうかを判断します。 これらの関数は、Ty 定義の operator== を使用しません。 atomic のメンバー関数は、memcpy を使用して Ty 型の値をコピーします。

部分的特殊化 atomic<Ty *> は、すべてのポインター型において存在します。 特殊化により、マネージ ポインター値のオフセットの加算またはマネージ ポインター値からのオフセットの減算が可能になります。 算術演算は ptrdiff_t 型の引数を受け取り、通常のアドレス算術演算との一貫性を保つように Ty のサイズに従ってその引数を調整します。

特殊化は、bool を除くすべての整数型において存在します。 それぞれの特殊化には、分割不可能な算術演算および論理演算のための豊富な一連のメソッドが用意されています。

atomic<char>

atomic<signed char>

atomic<unsigned char>

atomic<char16_t>

atomic<char32_t>

atomic<wchar_t>

atomic<short>

atomic<unsigned short>

atomic<int>

atomic<unsigned int>

atomic<long>

atomic<unsigned long>

atomic<long long>

atomic<unsigned long long>

整数の特殊化は、対応する **atomic_**integral 型から派生します。 たとえば、atomic<unsigned int>atomic_uint から派生します。

必要条件

ヘッダー: atomic

名前空間: std

参照

関連項目

<atomic>

その他の技術情報

C++ 標準ライブラリのヘッダー ファイル