Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
私はアトミックの使い方を学ぼうとしています:)
class foo { static std::atomic<uint32_t> count_; uint32 increase_and_get() { uint32 t = count_++; return t; } }
関数はincrease_and_get()スレッドセーフですか?
increase_and_get()
はい、安全です。インクリメントはアトミックであり、ローカルtは同時スレッドによって変更できません。コードをさらに単純化して、一時変数を完全に削除できます。
t
uint32 increase_and_get() { return count_++; }
はい、スレッドセーフになります。もちろん、実装にバグがないことを前提としていますstd::atomicが、通常は正しく行うのは難しくありません。
std::atomic
これはまさにstd::atomic、やるべきことです。