When exactly is a thread_local variable declared at global scope initialized?

一个人想着一个人 提交于 2019-12-07 05:21:54

问题


For example:

#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();
}

It's still not entirely clear from here when is n initialized.


回答1:


Simple enough, and all according to specification. n is going to be initialized whenever the new thread is run - before you enter any thread-specific functions.

To be exact, it is going to be initialized three times.



来源:https://stackoverflow.com/questions/35508133/when-exactly-is-a-thread-local-variable-declared-at-global-scope-initialized

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!