gpt4 book ai didi

c++ - std::atomic 可以用减量抵消增量吗?

转载 作者:可可西里 更新时间:2023-11-01 17:59:12 25 4
gpt4 key购买 nike

使用 relaxed memory order ,例如对于引用计数指针,是否允许编译器优化掉后续的递增和递减?

std::atomic_int32_t ai;
for (size_t i = 0; i < 10000; i++)
{
ai.fetch_add(1, std::memory_order_relaxed);
ai.fetch_sub(1, std::memory_order_relaxed);
}

看看反汇编,它看起来不像。但由于允许重新排序,并且 atomic 的行为就像一个计数器,只是线程安全的,有人可能会争辩说他可以优化,就好像它是一个普通的 int。

最佳答案

我相信它可以优化,除非声明为 volatile。原因是对于任何在其间交错一些线程的调度,存在不存在的有效调度。我相信 drf-sc 内存模型也是如此。

如果此线程读取介于两者之间的内容,情况就不会如此。

关于c++ - std::atomic 可以用减量抵消增量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38766077/

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