C 11 中局部靜態變數的線程安全初始化
人們對C 11 中局部靜態變數的線程安全初始化提出了擔憂C及其跨不同標準的演進。讓我們在 C 11 的背景下具體解決這個問題。
C 11 標準
第6.7 節中的C 11 標準(不是草案)指定:
因此,在C 11中,局部靜態變數的執行緒安全初始化完成。
熱門編譯器實作
主要編譯器,例如:
已正確實現所需的線程安全初始化行為按 C 11 標準。這可以確保範例中的 lg 這樣的局部靜態變數的建構函式即使在多執行緒環境中也只能執行一次。
其他注意事項
這很重要需要注意的是,執行緒安全初始化僅適用於變數本身的初始化。除非採用額外的同步機制,否則透過引用對變數的後續存取不能保證是線程安全的。
以上是C 11 如何保證局部靜態變數的執行緒安全初始化?的詳細內容。更多資訊請關注PHP中文網其他相關文章!