亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

本地靜態變量初始化線程在C+11中是否安全?

本地靜態變量初始化線程在C+11中是否安全?

C++
大話西游666 2019-06-21 17:32:38
本地靜態變量初始化線程在C+11中是否安全?我知道這是一個經常被問到的問題,但由于有這么多的變體,我想重新聲明它,并希望有一個反映當前狀態的答案。有點像Logger& g_logger() {     static Logger lg;     return lg;}變量lg的構造函數是否保證只運行一次?我從以前的答案中知道,在C+03中,這不是;在C+0x草案中,這是強制的。但我想要一個更清晰的答案在C+11標準(非草案)中,線程安全初始化行為是否已經完成?如果以上是肯定的,那么在當前流行編譯器的最新版本,即GCC 4.7、vc 2011和clang 3.0中,它們是否得到了適當的實現?
查看完整描述

2 回答

?
慕姐8265434

TA貢獻1813條經驗 獲得超2個贊

有關的第6.7節:

此類變量在控件第一次通過其聲明時被初始化;該變量在初始化完成后被視為初始化。[.]如果在初始化變量時控件同時輸入聲明,則并發執行應等待初始化完成。

還有一個腳注:

實現不能在初始化器的執行過程中引入任何死鎖。

所以是的,你很安全。

(當然,這與隨后通過引用訪問變量無關。)


查看完整回答
反對 回復 2019-06-21
?
智慧大石

TA貢獻1946條經驗 獲得超3個贊

-FNO-線程安全靜力學也值得一提.GCC:

不要發出額外的代碼來使用C+ABI中指定的例程來進行本地靜力學的線程安全初始化。您可以使用此選項在不需要線程安全的代碼中稍微減少代碼大小。

另外,看看這條舊線。GCC的函數靜態變量線程安全嗎?


查看完整回答
反對 回復 2019-06-21
  • 2 回答
  • 0 關注
  • 678 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號