[英]atomic compare without locks or mutex
我正在嘗試進行使用原子操作的練習。 我想使用compare_exchange
對原子數組的位置和原子int進行比較。
我的代碼是:
std::array<std::atomic<long int>, 20> xx;
std::atomic<long int> number;
我想要做:
if (xx[i] > number)
number = xx[i];
如何在我的情況下使用compare_exchange_weak()
? 我看過很多次http://en.cppreference.com/w/cpp/atomic/atomic但我不明白。
你不能。 std::atomic
允許對單個對象進行各種原子操作。 要執行涉及多個對象的原子操作,您需要鎖定。
compare_exchange
,如您的鏈接所描述的,原子地將對象與非原子值進行相等性比較,並根據該比較更新它。 它不比較兩個原子值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.