我正在做多线程作业,并有这样的模板(粘贴一部分,我应该改变):
...
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) { }