簡體   English   中英

沒有鎖或互斥的原子比較

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM