首頁 > 後端開發 > C++ > 哪些資料型別在 64 位元 GNU C/C 系統上本質上是原子的?

哪些資料型別在 64 位元 GNU C/C 系統上本質上是原子的?

Barbara Streisand
發布: 2024-12-18 04:00:09
原創
801 人瀏覽過

Which Data Types Are Naturally Atomic on a 64-Bit GNU C/C   System?

GNU C 和 GNU C 中 64 位元電腦上的哪些類型本質上是原子的?

與C11 及更高版本或C 11 及更高版本不同,它們提供使用_Atomic 或std::atomic 類型保證原子性,C 和C 語言標準本身不保證原子讀取和寫道。相反,原子性等級取決於編譯器實作和目標體系結構。

在 x86-64 處理器上運行 Linux 的 64 位元電腦上,不同資料類型的自然原子性會有所不同。 GNU C 和 GNU C 編譯器( gcc 和 g )為特定類型提供一定程度的原子性。

原子型態:

  • int:頭檔中的typedefword _Atomic_word;
  • __sig_atomic_t:頭檔中的typedef;表示int是原子的。定義原子整數類型,確保在存在非同步中斷的情況下進行原子讀寫。

非原子型數:

  • int64_t(長long)
  • int64_t(長long)
  • 無符號long長)
  • 雙精確度(64 位元)
  • 長雙(也64位)

附加說明:
  • 原子性是指原子讀寫,而非原子遞增、遞減或複合賦增值。
  • 需要注意的是,雖然某些類型在某些情況下保證是原子的上下文(例如, volatile sig_atomic_t 對於信號來說是原子的),對於線程來說它們不一定是原子的。
  • 編譯器可能會以打破原子性假設的方式最佳化程式碼,特別是如果這些假設沒有明確語言標準中規定。
為了確保線程安全的並發訪問,明確使用 _Atomic 或 std::atomic 類型是推薦。

以上是哪些資料型別在 64 位元 GNU C/C 系統上本質上是原子的?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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