Tra*_*isG 3 c++ multithreading
例如,以下代码是否可以为其中一个线程打印"3"?
int foo()
{
static int a = 1;
return ++a;
}
void thread1()
{
cout<<foo()<<endl;
}
void thread2()
{
cout<<foo()<<endl;
}
Run Code Online (Sandbox Code Playgroud)
编辑:这是C++ 98
当然它可以打印3.这甚至是这个代码的"通常语义".线程1用1初始化它并递增它,因此它是2.线程2再次递增它,所以它是3.
所以,是的,作用域静态变量是静态的,即全局变量.它们由线程共享.
当然,代码具有竞争条件,因此结果可能是任何东西,但3可能是结果.
| 归档时间: |
|
| 查看次数: |
4504 次 |
| 最近记录: |