【问题标题】:Synchronisation of Static Objects静态对象的同步
【发布时间】:2012-09-07 17:39:41
【问题描述】:

我有以下代码C++伪代码

class A
{
 private:
 B s_staticvar;

 public:
 static void doSomething()
 {
 }
}

许多线程可以调用doSomething()。所有线程只读取 s_staticvar 并且不修改它们。 我的问题是我们必须在读取静态变量之前锁定它吗?

对象 B 的非原子读取会导致同步问题吗?

【问题讨论】:

    标签: c++ multithreading static thread-safety


    【解决方案1】:

    您可以安全地从多个线程读取数据。不需要锁定。这些线程甚至不会互相注意到。只有您需要确保在其他线程启动之前完全准备好您的变量。

    在多核/多处理器环境中,您的数据的多个副本可能会出现在不同处理器的缓存中。只要它们都相同,这不是问题。

    【讨论】:

      猜你喜欢
      • 2013-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多