考虑以下代码:
#include <iostream>
#include <thread>
using std::cout;
using std::thread;
thread_local int a;
void foo()
{
a = a + 1;
cout << a << "\n";
}
void bar()
{
cout << a << "\n";
}
void baz()
{
cout << "Something\n";
}
int main()
{
thread first(foo);
thread second(bar);
thread third(baz);
second.join();
first.join();
third.join();
cout << a;
}
由于a
有线程存储持续时间,我们至少有三个不同的对象,用 a 和 used in和first
线程表示。我们不使用inside 。是否有可以在第三个中使用的零初始化?我问这个问题是因为我在标准中找不到任何关于此的内容:second
main
a
third
a
作为线程执行的结果,具有线程存储持续时间的非局部变量被初始化。
是否定义了实现?