嵌套本地类的静态方法

时间:2012-02-14 20:45:04

标签: c++ thread-safety nested-class

我的问题是对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);
}

1 个答案:

答案 0 :(得分:2)

外部someFunc有自己的堆栈框架,所以如果rand是线程安全的(我不确定它是不是),那么外部函数和嵌套静态函数都可以。