併發:C 11 記憶體模型中的原子性和易失性
問題:
問題:在具有共享全域變數的多執行緒環境,一個執行緒是否可以從原子中讀取過時的值多變的?原子類型和易失性類型在確保資料完整性方面有何不同?
答案:
Volatile 與 AtomicVolatile 確實不保證原子存取。其主要用途是記憶體映射 I/O 和訊號處理。將 volatile 與 std::atomic 結合使用是多餘的。
原子變數的記憶體排序std::memory_order_relaxed:寬鬆的記憶體排序,其中執行緒可能無法就操作順序達成一致,從而導致結果不一致。
確保資料完整性為了確保資料完整性,應使用讀取-修改-寫入(RMW)操作,例如交換()和fetch_add( )。這些操作始終對「最新」值進行操作,從而消除了過時值的風險。
以上是C 11 中的原子變數可以防止多執行緒環境中的過時讀取嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!