今天,我们遇到了一个涉及多线程环境中静态成员函数的问题.我们问自己并且找不到令人满意的答案的问题是:静态成员函数的局部变量是否也是静态的?
// header
class A
{
static int test();
}
// implementation
int A::test()
{
int a = rand();
int b = rand();
int c = a + b;
return c;
}
Run Code Online (Sandbox Code Playgroud)
假设您有两个线程都调用A :: test().当线程1 c = a + b进入线程2时,是否有可能进入test()并a通过分配rand()的新返回值来改变值,换句话说,两个线程是否都运行a,b和c的某些内存位置?