gpt4 book ai didi

c++ - 原子增量和返回计数器

转载 作者:IT老高 更新时间:2023-10-28 22:17:14 28 4
gpt4 key购买 nike

尝试制作一个唯一的 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,但是读到 mutex 很慢。

最佳答案

简单使用:

std::atomic<int> id{};

int create_id() {
return id++;
}

http://en.cppreference.com/w/cpp/atomic/atomic/operator_arith

关于c++ - 原子增量和返回计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41206861/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com