c++ - 嵌套局部类的静态方法

标签 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);
}

最佳答案

外部 someFunc 有自己的堆栈框架,因此如果 rand 是线程安全的(我不确定是否是),那么外部函数和嵌套静态功能很好。

关于c++ - 嵌套局部类的静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9283920/

相关文章:

c++ - 编写抽象层的最优雅方式

c++ - 如何创建锁定和解锁互斥锁的智能指针?

Python 线程通信不起作用

c++ - 嵌套在模板化外部类中的非模板化结构如何访问外部类的静态成员?

c++ - 本地类、内部类和嵌套类在C++中是一回事吗?

c++ - 在 (Qt) 应用程序中集成广告的解决方案

c++ - 复制初始化表单 '= {}'

c++ - 为什么是 0022FF08 + sizeof(int) = 0022FF0C 而不是 0022FF0A?

.net - 如何在不使用锁的情况下在 .Net 中设置最小值?

python - 嵌套的 Python 类需要访问封闭类中的变量