试图让一个唯一的ID生成功能,以及与此想出了:单位递增,并返回柜台
std::atomic<int> id{0};
int create_id() {
id++;
return id.load();
}
但我认为这是可能该函数返回相同的值的两倍,对不对?例如,线程A调用该函数,递增该值,但在线程B进入时暂停并且也递增该值,最后A和B都返回相同的值。
因此,使用互斥体,函数可能是这样的:
std::mutex mx;
int id = 0;
int create_id() {
std::lock_guard<std::mutex> lock{mx};
return id++;
}
我的问题:是否可以创建只使用原子公司的反产卵独特int类型的行为?我问的原因是因为我需要产生大量的id,但是读到互斥量很慢。