c 函式區域性靜態變數第二次被訪問的時候具體做了些什麼?

時間 2021-06-03 11:08:35

1樓:Atlantis

別的不知道用g++測試了一下單例標記 + 雙檢測鎖, 只是加乙個bool標記是否初始化的話, 如果在建構函式裡加個sleep, 還是還是會出問題.

#include

#include

using namespace std;

class A ;

A *singleon()

void do_something()

int main()

反彙編結果,

兩個框裡是加鎖前後的兩次判斷, 雖然實現內部實現複雜, 但是保證了執行緒安全性.

2樓:

#include

using

namespace

std;

inti=0

;class

Test

};int

main();

cout

<

;// 0

getinstance

();// Test() ...

cout

<

;// 1

getinstance

();//

cout

<

;// 1

return0;}

3樓:

說說msvc的實現。編譯器自動建立兩個全域性變數,乙個指向靜態區域性變數的指標,乙個布林值,用於標記是否第一次使用。下面就很簡單了,第一次進函式時建立物件,以後都直接使用該物件。

如果清朝在第二次工業革命後被才被開啟國門,歷史將會如何改變?

新蘭沒愛 晚個20幾年並沒啥區別。大概也就是洋務運動的時候直接搞點更加新的技術,然後甲午輸的再慘一點或者說極小機率與日本打個平手還是慘勝,然後歷史車輪繼續向前,總的來說也就是大同小異吧。 快哉此風 閉關鎖國的國家,不會發生工業革命。如果能完成第二次工業革命,那麼大清應該早就走出國門爭搶殖民地開拓海外...

距離第二次被前男友分手五個月了,還是想復合怎麼辦?

安然鄔子 你要清楚,你的確還愛著他,還想著他,但是既然他放下過你一次,就證明他未來的規劃裡完全沒有你。你不必為了他一退再退,有很多比他優秀的男孩子在等著你,你需要把自己變的更好,更加溫柔,更加的愛自己,要學會愛乙個人,先要學會愛自己,你確定你是喜歡他,還是捨不得他,又或者是不甘心呢。 仙人板板 堅決...

日本留學 在留第一次申請被拒,第二次能過嗎?

三道留學 看你的拒簽理由,根據你第一次提交的材料和拒簽理由來分析是否有再申請的可能。三道留學 感謝信 日本工學院留學前輩兩次拒簽申請經歷 啟程塾阿啟老師 材料作假短時間內的第二次申請必不可過。如果是因為流水 學時 日語水平 審核不通過,只需要修改或者補齊這方面的材料即可。被拒簽的原因也可能是因為語言...