首頁 > 後端開發 > C++ > C 整數讀寫在多執行緒環境中是原子的嗎?

C 整數讀寫在多執行緒環境中是原子的嗎?

Barbara Streisand
發布: 2024-12-02 12:02:11
原創
751 人瀏覽過

Are C   Integer Reads and Writes Atomic in Multithreaded Environments?

C 是否讀寫 Int 原子? [重複]

問題:

在一個執行緒更新而另一個執行緒讀取整數的多執行緒應用程式中,是否有必要同步對此的存取多位元組值?是否可以在完成之前中斷部分寫入,從而允許讀取捕獲不完整的值?

答案:

C 中整數讀寫的原子性取決於的架構上system.

詳細資訊:

  • 在IA32系統上:正確對齊的位址將具有原子讀取和寫入。未對齊的寫入可能是原子的,這取決於快取。
  • 快取:如果記憶體位於單一 L1 快取行中,則寫入是原子的。如果不是,則可能不是。
  • 匯流排寬度:資料匯流排的寬度會影響原子性。在一些較舊的系統上,對未對齊位址的 16 位元寫入不是原子的,而在具有更寬總線的系統上則是原子的。
  • 編譯器最佳化: 在 C/C中,標記很重要共享值是易失性的,以防止優化器假設它永遠不會在一次更新

結論:

是否需要同步取決於處理器架構、記憶體佈局、編譯器最佳化等因素。一般來說,建議同步對共享多位元組值的訪問,特別是在讀寫順序相關的關鍵部分。

以上是C 整數讀寫在多執行緒環境中是原子的嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板