我正在做多线程作业,并有这样的模板(粘贴一部分,我应该改变):

...
class MeanCounter : public MeanCounterBase {
public:

...
};
...


我需要使用<atomic>并在课堂上对其进行预定义。

我做了什么:

class MeanCounter : public MeanCounterBase {
public:
  std::atomic<unsigned> W;

  void MeanCounterBase () {
    W.store(0);
  }
private:
...
};
...


但这根本没有用!程序编译没有错误。但是,所有线程在启动时W都不等于0。我在做什么错?

最佳答案

您的问题在这里:

  void MeanCounterBase () {
    W.store(0);
  }


这只是MeanCounter类中的一个函数,我怀疑您是否曾经调用过它。您可能想要的是MeanCounter的构造函数:

 MeanCounter() : W(0) { }

10-08 00:37