我的问题是对this question的扩展。嵌套本地类的静态方法
在原始问题中,OP询问是否需要对数据竞争保护静态函数的局部变量。答案是每个线程都有自己的堆栈框架。假设这同样适用于具有静态函数的嵌套类吗?
// Function called by several threads
int someFunc(int a, int b)
{
struct nestedStruct
{
static int do_something(int& a, int& b)
{
a = rand();
b = rand();
return a + b;
}
};
return nestedStruct::do_something(a, b);
}
所有局部变量都放在堆栈上,所有线程都得到一个单独的堆栈。无论是静态函数还是嵌套类与它无关。 – 2012-02-14 20:49:52
嵌套类(我的意思是定义在一个函数内)有静态成员呢?我试着用一个静态成员变量。没有工作。 – Sharad 2012-02-14 20:55:06
@Sharad:它确实可以... http://ideone.com/tl8Za – Samaursa 2012-02-14 21:02:41