簡體   English   中英

分配等效於std :: atomic的加載/存儲<bool>

[英]Is assignment equivalent to load/store for std::atomic<bool>

我看到這可能是有問題的答案。 我必須顯式調用原子加載/存儲嗎?

因此,為了清楚起見,我將簡要地重申我的問題,希望將來的讀者能清楚地理解。

std::atomic<bool> b(false);
bool x = b;

和...一樣

std::atomic<bool> b(false);
bool x = b.load();

std::atomic<bool> b(false);
b = true;

和...一樣

std::atomic<bool> b(false);
b.store(true);

如果確實如此,則:

  1. 為什么有2個選擇? 明顯的好處是什么?
  2. 與原子打交道時,是否使用更冗長的load()/ store()而不是可能引起混淆的賦值(=),這是一種好習慣,這可能取決於LHS或RHS是原子。

注意:我已經意識到以下事實:兩個變量不能為std :: atomic,即LHS和RHS,因為不可能在一條指令中進行原子讀寫。

是的,它們是相同的。 我認為提供重載運算符的原因是為了方便。 更不用說使將現有代碼轉換為使用原子更容易了。

就個人而言,我寧願對loadstore始終保持明確。 我認為這是更好的做法,它會迫使您記住您正在處理原子。

此外,這些功能還允許您指定其他存儲順序,這對於重載的操作員版本是不可能的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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