我在c ++应用程序生活中寻找线程安全的唯一id生成,所以我创建了以下静态类。
class Utils {
public :
static int getUid();
};
int Utils::getUid() {
static std::atomic<std::uint32_t> uid;
uid = 0;
return ++uid;
}
任何建议,这是正确的做法。
答案 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;
}