首頁 > 後端開發 > C++ > C 11 中的局部靜態變數初始化是執行緒安全的嗎?

C 11 中的局部靜態變數初始化是執行緒安全的嗎?

Mary-Kate Olsen
發布: 2024-12-29 11:23:09
原創
924 人瀏覽過

Is Local Static Variable Initialization in C  11 Thread-Safe?

C 11 局部靜態變數初始化:線程安全

關於C 11 中局部靜態變數的線程安全,已經有很多了討論。本文旨在根據當前標準和實現狀態提供全面的答案。

C 11 局部靜態變數的線程安全

C 11 的第6.7 節標準明確指出,局部靜態變數的初始化發生在控制第一次通過其聲明時。此外,初始化完成後即被視為完成,任何在初始化過程中進入宣告的並發執行都必須等待其完成。

編譯器中的實作

中為了符合標準,流行的編譯器如GCC 4.7、Visual C 2011、Clang 3.0都實作了局部靜態變數的執行緒安全初始化。這可確保局部靜態變數(例如範例中的 lg)的建構子僅執行一次,從而確保執行緒安全的初始化。

其他注意事項

雖然初始化是線程安全的,但請務必注意,這不會擴展到透過引用對變數的後續存取。因此,在使用初始化變數時仍然需要確保執行緒安全,因為標準沒有為初始化階段之後的執行緒安全存取指定任何具體保證。

以上是C 11 中的局部靜態變數初始化是執行緒安全的嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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