私はstd::atomic
変数を認識していませんでしたが、標準によって提供されているstd::mutex
(奇妙な権利!しかし、一つのことは、私の目を引いた。標準の原子boolと原子フラグの差
タイプ
:下記に記載されている標準で提供(私には)一見、同じ2つの原子の種類があり、また、それは、std::atomic_flag type
の例で言及されている -
標準: :atomic_flagはアトミックブール型です。 std :: atomicのすべての特殊化とは異なり、ロックフリーであることが保証されています。 std :: atomicとは異なり、std :: atomic_flagはロード操作やストア操作を行いません。
私は理解できません。 std::atomic bool type
はロックフリーであることが保証されていませんか?それは原子的ではないのですか?
2人の違いは何ですか?また、どの場合に使うべきですか?
"アトミック"と "ロックフリー"は同義語ではありません。アトミックでなくても簡単にロックフリーにすることができます(これは、たとえばP:のような同期を行わない場合に起こります)、ロックフリーではないアトミック操作を簡単に行うことができますモニター)。 – Luaan