静态类数据成员的线程安全性

时间:2018-04-28 01:07:11

标签: c++

我可以假设C ++中的静态类数据成员的线程安全吗?在下面的例子中,SetCounter是线程安全的吗?

class Foo {
public:
  static void SetCounter(int c) { counter = c; }  
private:
  static int counter = 0;
}

1 个答案:

答案 0 :(得分:1)

线程安全是指使行动独立于其他行动以避免竞争条件。如果您有两个主题,一个主叫SetCounter(1)而另一个主叫SetCounter(2),则您无法保证将counter设置为什么。您需要在值上使用互斥锁/锁定以防止其被其他线程修改。如果你正在使用像boost这样的库,你可以参考Synchronization page。否则,请使用您自己的互斥锁切换它是锁定还是解锁。