私のマルチスレッド アプリケーションには、この例に還元できる条件があります。
std::atomic<bool> a, b;
// ...
if ( a.load() && b.load() )
{
// ...
}
明らかに、条件の直後に、a と b は異なる値を保持できます。
私のアプリケーションでは、両方の値が同時に true の場合、状態を二度と変更できないと考えています。ただし、a.load()
返さtrue
れた後、評価される前でも値が変わる可能性がありますb.load()
。
このステートメントを原子的に評価するためのエレガントなソリューションはありますか? 明らかに、a.store(..) と b.store(..) のすべての呼び出しをロックすることはここで機能しますが、それは素晴らしいとは言えません。