1. ホーム
  2. c++

[解決済み] boolの代わりにatomic<bool>を使用する必要があるのはどんな場合ですか?重複

2022-11-11 19:04:40

質問

はありません。 atomic<bool> は冗長ではありませんか? bool は元々アトミックだから?部分的に変更されたbool値を持つことは不可能だと思うのですが。本当に必要なのはいつなのか atomic<bool> の代わりに bool ?

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

いいえ でない限り、C++の型は本質的にアトミックです。 std::atomic* -でない限り、本質的にアトミックではありません。それは、標準がそう言っているからです。

実際のところ、ハードウェアの命令として発せられるのは std::atomic<bool> を操作するために出される実際のハードウェア命令は、 通常の bool と同じかもしれませんが、アトミックであることはより大きな概念であり、より広い影響(例えば、コンパイラの再順序付けに対する制限)を持っています。さらに、一部の演算 (否定など) はアトミック演算でオーバーロードされ、非アトミック変数のネイティブの読み取り-変更-書き込みシーケンスとは明らかに異なる命令がハードウェア上に作成されます。