![](/img/trans.png)
[英]Thread-safety about `std::map<int, std::atomic<T>>` under a special condition
[英]condition on several std::atomic<T>
在我的多線程應用程序中,我有一個可以簡化為此示例的條件
std::atomic<bool> a, b;
// ...
if ( a.load() && b.load() )
{
// ...
}
顯然,在條件之后,a和b可以保持不同的值。
在我的應用程序中,它認為,如果兩個值同時為真,則它們不能再次改變狀態。 但是在a.load()
返回true
,即使在計算b.load()
之前,它也可能會更改其值。
是否有一個優雅的解決方案來原子評估這個陳述? 顯然鎖定a.store(..)和b.store(..)的每個調用都可以在這里工作,但這遠非好。
您是否考慮過使用atomic<int>
,並為bool設置位? 這將允許您以原子方式查詢。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.