c ++中的线程安全唯一id生成

时间:2016-09-12 09:24:23

标签: c++ c++11

我在c ++应用程序生活中寻找线程安全的唯一id生成,所以我创建了以下静态类。

class Utils {
public :
    static int getUid();
};

int Utils::getUid() {
    static std::atomic<std::uint32_t> uid;
    uid = 0;
    return ++uid;
}

任何建议,这是正确的做法。

1 个答案:

答案 0 :(得分:2)

以这种方式修复:

class Utils {
public :
    static int getUid();
};

int Utils::getUid() {
    static std::atomic<std::uint32_t> uid { 0 };  // <<== initialised
//    uid = 0;    <<== removed
    return ++uid;
}