C ++ライブラリ-<アトミック>
前書き
これらは、アクセスがデータ競合を引き起こさないことが保証されている値をカプセル化するタイプであり、異なるスレッド間でメモリアクセスを同期するために使用できます。アトミックライブラリは、ロックレス並行プログラミングを可能にするきめ細かいアトミック操作のコンポーネントを提供します。各アトミック操作は、同じオブジェクトを含む他のアトミック操作に関して分割できません。
原子型
シニア番号 | メンバーの種類と定義 |
---|---|
1 | アトミック アトミッククラステンプレートとbool、integral、およびpointerタイプの特殊化 |
Cスタイルの原子型
以下はアトミックタイプであり、このヘッダーでも定義されています。
基本的な整数型のアトミック。
これらは、対応する完全な特殊化のtypedefです。 アトミック クラステンプレートまたはそのような専門分野の基本クラス。
幅ベースの積分のアトミック(で定義されているもの)<cinttypes>)。
これらのそれぞれは、基本的な整数型の上記のアトミックの1つのエイリアスであるか、またはアトミック拡張整数型のクラステンプレート。
ここで、Nは、8、16、32、64、またはライブラリでサポートされているその他のタイプ幅の1つです。
含まれるタイプ | 原子型 | 説明 |
---|---|---|
bool |
atomic_bool | |
char |
atomic_char | |
signed char |
atomic_schar | |
unsigned char |
atomic_uchar | |
short |
atomic_short | |
unsigned short |
atomic_ushort | |
int |
atomic_int | |
unsigned int |
atomic_uint | |
long |
atomic_long | |
unsigned long |
atomic_ulong | |
long long |
atomic_llong | |
unsigned long long |
atomic_ullong | |
wchar_t |
atomic_wchar_t | |
char16_t |
atomic_char16_t | |
char32_t |
atomic_char32_t | |
intmax_t | atomic_intmax_t | |
uintmax_t | atomic_uintmax_t | |
int_least N_t |
atomic_int_least N_t |
|
uint_least N_t |
atomic_uint_least N_t |
|
int_fast N_t |
atomic_int_fast N_t |
|
uint_fast N_t |
atomic_uint_fast N_t |
|
intptr_t | atomic_intptr_t | |
uintptr_t | atomic_uintptr_t | |
size_t | atomic_size_t | |
ptrdiff_t | atomic_ptrdiff_t |
アトミックタイプの操作
&シニア番号 | 操作と定義 |
---|---|
1 | atomic_is_lock_free アトミックタイプの操作がロックフリーかどうかをチェックするために使用されます |
2 | atomic_store&atomic_store_explicit アトミックオブジェクトの値を非アトミック引数に自動的に置き換えます |
3 | atomic_load&atomic_load_explicit アトミックオブジェクトに格納されている値をアトミックに取得します |
4 | atomic_exchange&atomic_exchange_explicit アトミックオブジェクトの値を非アトミック引数にアトミックに置き換え、アトミックの古い値を返します |
5 | atomic_compare_exchange_weak&atomic_compare_exchange_weak_explicit&atomic_compare_exchange_strong&atomic_compare_exchange_strong_explicit アトミックオブジェクトの値を非アトミック引数とアトミックに比較し、等しい場合はアトミック交換を実行し、等しくない場合はアトミックロードを実行します。 |
6 | atomic_fetch_add&atomic_fetch_add_explicit アトミックオブジェクトに非アトミック値を追加し、アトミックの以前の値を取得します |
7 | atomic_fetch_sub&atomic_fetch_sub_explicit アトミックオブジェクトから非アトミック値を減算し、アトミックの以前の値を取得します |
8 | atomic_fetch_and&atomic_fetch_and_explicit アトミックオブジェクトを論理ANDの結果で非アトミック引数に置き換え、アトミックの以前の値を取得します |
9 | atomic_fetch_or&atomic_fetch_or_explicit アトミックオブジェクトを非アトミック引数を使用した論理ORの結果に置き換え、アトミックの以前の値を取得します |
10 | atomic_fetch_xor&atomic_fetch_xor_explicit アトミックオブジェクトを非アトミック引数を使用した論理XORの結果に置き換え、アトミックの以前の値を取得します |
フラグの種類と操作
シニア番号 | フラグの種類と定義 |
---|---|
1 | atomic_flag ロックフリーブールアトミックタイプ |
2 | atomic_flag_test_and_set&atomic_flag_test_and_set_explicit フラグをアトミックにtrueに設定し、以前の値を返します |
3 | atomic_flag_clear&atomic_flag_clear_explicit フラグの値をアトミックにfalseに設定します |