C++中线程安全的唯一ID生成

Sac*_*hin 5 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;
}
Run Code Online (Sandbox Code Playgroud)

任何建议,这是正确的方法吗?

Ric*_*ges 8

这样修复它:

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

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