1. ホーム
  2. c++

なぜstd::atomicではvolatile修飾子が使われているのですか?

2023-10-02 03:26:11

質問

私が読んだところでは ハーブ・サッター その他 と思うでしょう。 volatile と並行プログラミングは、少なくとも C/C++ に関する限り、完全に直交する概念であると思うでしょう。

しかし、GCC では 実装 はすべて std::atomic のメンバー関数には volatile の修飾子があります。 同じことは、Anthony Williams の の実装 std::atomic .

それでどうするかというと、私の atomic<> という変数が必要なのでしょうか? volatile でなければならないのでしょうか?

どのように解決するのですか?

なぜ volatile 修飾子が使われているのでしょうか? std::atomic ?

volatileオブジェクトがatomicにもなるように。参照 を参照してください。 :

該当する引用文は

<ブロッククオート

関数や演算は volatile オブジェクトを扱うように定義されているので、volatile であるべき変数もアトミックであることができる。ただし、volatile修飾子はアトミックであるために必要なものではありません。

私の atomic<> 変数は volatile でなければならないのでしょうか?

いいえ、アトミックオブジェクトは揮発性である必要はありません。