atomic 構造体
Ty 型の格納された値に対して分割不可能な操作を実行するオブジェクトについて記述します。
template <class Ty>
struct atomic;
メンバー
パブリック コンストラクター
名前 |
説明 |
---|---|
アトミック オブジェクトを構築します。 |
パブリック演算子
名前 |
説明 |
---|---|
格納されている値を読み取って返します。(atomic::load メソッド) |
|
格納されている値を置き換えるために指定された値を使用します。(atomic::store メソッド) |
|
格納されている値をインクリメントします。 整数およびポインターの特殊化でのみ使用されます。 |
|
指定した値を格納されている値に加算します。 整数およびポインターの特殊化でのみ使用されます。 |
|
格納されている値をデクリメントします。 整数およびポインターの特殊化でのみ使用されます。 |
|
指定した値を格納されている値から減算します。 整数およびポインターの特殊化でのみ使用されます。 |
|
指定されている値と格納されている値に対して、ビットごとの and を実行します。 整数の特殊化でのみ使用されます。 |
|
指定されている値と格納されている値に対して、ビットごとの or を実行します。 整数の特殊化でのみ使用されます。 |
|
指定されている値と格納されている値に対して、ビットごとの exclusive or を実行します。 整数の特殊化でのみ使用されます。 |
パブリック メソッド
名前 |
説明 |
---|---|
this に対して atomic_compare_and_exchange 操作を実行し、その結果を返します。 |
|
this に対して weak_atomic_compare_and_exchange 操作を実行し、その結果を返します。 |
|
指定した値を格納されている値に加算します。 |
|
指定されている値と格納されている値に対して、ビットごとの and を実行します。 |
|
指定されている値と格納されている値に対して、ビットごとの or を実行します。 |
|
指定した値を格納されている値から減算します。 |
|
指定されている値と格納されている値に対して、ビットごとの exclusive or を実行します。 |
|
this に対する分割不可能な操作がロック制御不要であるかどうかを指定します。 その型に対する分割不可能な操作においてロックが使用される場合、atomic 型はロック制御不要になります。 |
|
格納されている値を読み取って返します。 |
|
格納されている値を置き換えるために指定された値を使用します。 |
解説
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