在多线程环境中为类的每个实例赋予唯一标识符

时间:2018-12-31 14:11:38

标签: c++ multithreading static

为每个类赋予唯一ID的常见解决方案是使用静态成员,如下所示:

class Example {
   static unsigned int nextID;
   int id;
public:
   Example();
};

int Example::nextID = 0;

Example::Example () {
  id = nextID++;
}

我是否正确地认为这在多线程环境中并不安全? 什么是正确的解决方案?您是否应该在构造函数中的nextID上简单地使用锁防护?

0 个答案:

没有答案