gpt4 book ai didi

c++ - 线程安全局部变量

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:33:32 30 4
gpt4 key购买 nike

void HelloWorld()
{
static std::atomic<short> static_counter = 0;
short val = ++static_counter; // or val = static_counter++;
}

如果这个函数被两个线程调用,

局部变量val是否可以在两个线程中都为1?或(如果使用 static_counter++ 则为 0?)

最佳答案

Can the local variable val be 1 in both threads?

没有。 ++static_counter 等同于:

 fetch_add(1)+1

不能为两个(或更多)线程返回相同因为 fetch_add以原子方式执行。

关于c++ - 线程安全局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36259502/

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