2016-02-19 75 views
4

例如:在全局範圍聲明的thread_local變量是否已初始化?

#include <thread> 

thread_local int n = 1; 

void f() 
{ 
    ++n; // is n initialized here for each thread or prior to entering f()? 
} 

int main() 
{ 
    std::thread ta(f); 
    std::thread tb(f); 

    ta.join(); 
    tb.join(); 
} 

它仍然沒有完全從here明確爲n初始化時。

+0

線程初始化時。 –

+0

對於每個線程(線程)初始化時。 –

+1

相關:http://stackoverflow.com/questions/24253584/when-is-a-thread-local-global-variable-initialized –

回答

3

夠簡單了,一切都按規格說明。當你輸入任何線程特定的函數之前,每當新線程運行時,n將被初始化。

確切地說,它將被初始化三次。