gpt4 book ai didi

c++ - 使用 volatile long 作为原子

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

如果我有这样的东西......

volatile long something_global = 0;

long some_public_func()
{
return something_global++;
}

当多线程访问时,期望此代码不会中断(竞争条件)是否合理?如果它不是标准的,它仍然可以作为对现代编译器的合理假设吗?

注意:我使用它的全部目的是原子递增和递减 - 没什么特别的。

最佳答案

否 - volatile 并不意味着同步。这只是意味着每次访问都将返回最新的值(而不是线程中本地缓存的拷贝)。

后增量不是原子操作,它是内存访问后跟内存写入。交错两个可能意味着该值实际上只增加了一次。

关于c++ - 使用 volatile long 作为原子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3122382/

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