class A{
public:
A(){
//do something
}
}
//main.cpp
A a;
int main()
{
...
}
全域性變數的初始化早於main函數,故可行。
CRITICAL_SECTION cs;
int a = [](CRITICAL_SECTION& _cs){ //注意這裏是參照,不然會對CRITICAL_SECTION進行賦值構造而
//產生新的CRITICAL_SECTION,進入可能導致異常
InitialCriticalSection(_cs);
return 0;
}(cs);
和方法1的基礎思想一致,優點是不需要建立額外的類範例,這在某些特定場景下很有用,比如初始化 需要被用作自釋放鎖的CRITICAL_SECTION
但凡在程式啓動之前做的動作都可以實現,比如預編譯、記憶體空間裝載、全域性變數初始化、靜態變數初始化、編譯指令、鏈接指令等等。
上述兩種方法還是比較好用的,能應付絕大多數場景。