首頁 >後端開發 >C++ >C 整數讀寫總是原子的嗎?

C 整數讀寫總是原子的嗎?

DDD
DDD原創
2024-11-30 09:00:18671瀏覽

Are C   Integer Reads and Writes Always Atomic?

C 對 int 的讀寫是原子性的嗎?

問題涉及 C 中整數讀寫操作的原子性。原子性確保操作是作為一個不可分割的單元完成,確保過程中不會發生中斷。

這個問題的答案取決於系統的架構。在 IA32 等處理器上,對整數的對齊寫入通常是原子的。然而,未對齊的寫入可能不是原子的,這取決於所使用的快取系統。如果記憶體駐留在單一快取行中,則原子性得以維持;

此外,CPU 和 RAM 之間的匯流排寬度也會影響原子性。對於較舊的處理器(例如具有 16 位元匯流排的 8086),對齊的 16 位元寫入是原子的,而在具有 8 位元匯流排的 8088 上無法保證相同的操作。

對於 C/ C 程式中,將共享值宣告為易失性至關重要。這可以防止最佳化器假設變數不會在執行緒內修改,從而確保始終讀取實際值。

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn