我的问题是 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);
}
最佳答案
外部 someFunc
有自己的堆栈框架,因此如果 rand
是线程安全的(我不确定是否是),那么外部函数和嵌套静态功能很好。
关于c++ - 嵌套局部类的静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9283920/