sta ::atomic<bool>およびC++の自動型

sta::アトミック

最も基本的なの原子整数类型はstd::atomic(事前定義されたエイリアスstd :: atomic_boolを使用できます)です。これはstd :: atomic_flagよりもフル機能のブールフラグであり、非アトミックブールで割り当てて初期化できます。

std::atomic<bool> b(true);
b=false;

アトミック代入演算は、参照ではなく値を返すことに注意してください。

ここに画像の説明を挿入
クリアを使用するstd::atomic_flagとは異なり、std :: atomic書き込み(ストア)操作はstoreを介して実行されます。test_and_setもexchange関数に置き換えられます。この関数は、元の値を新しい値に置き換えて、で元の値を取得できます。同時。std :: atomicは、プレーンブール値への暗黙的な変換、またはロード操作であるload関数の呼び出しによって、値に対する変更されていないクエリをサポートします。

std::atomic<bool> b;
bool x=b.load(std::memory_order_require);
b.store(true);
x=b.exchange(false,std::memory_order_acq_rel);

自動タイプの使用法の要約

使用する

autoは、C++プログラミング言語のキーワードです。どちらの場合も

(1)変数を宣言するとき、変数の型は初期化式に従って自動的に推測されます

(2)関数が宣言されたときの関数の戻り値のプレースホルダー

autoは、変数が宣言されたときの変数の初期値のタイプに基づいて、この変数に一致するタイプを自動的に選択できます。

例:値x = 1の場合、次のように宣言します:int x=1またはlongx= 1、またはauto x=1を直接宣言します

利用方法

宣言された変数のタイプは、次のように初期化式から自動的に推測されます。

auto f = 3.14;  //double
auto s("hello");  //const char*
auto z = new auto(9);  //int *
auto x1 = 5, x2 = 5.0, x3 = 'r';   //错误,必须是初始化为同一类型

ただし、このような単純な変数宣言型の場合、autoキーワードを使用することはお勧めしませんが、その型をより明確に記述してください。

autoキーワードは、型が長く複雑で、変数の使用範囲が特定されている場合に適しているため、プログラムがより明確で読みやすくなります。そのような:

 std::vector<int> vect; 
 for(auto it = vect.begin(); it != vect.end(); ++it)
 {
    
      //it的类型是std::vector<int>::iterator
    std::cin >> *it;
  }

おすすめ

転載: blog.csdn.net/weixin_43838785/article/details/123451780