为什么 std::memory_order_acq_rel 在 C++11 中总是触发警告?

问题描述 投票:0回答:1

我的编译器是clang 18.1.0-rc1;以下代码会触发两个警告:

#include <atomic>

std::atomic<int> n;

int main() {
    // Warning: Memory order argument to atomic operation is invalid
    n.load(std::memory_order_acq_rel); 

    // Warning: Memory order argument to atomic operation is invalid
    n.store(1, std::memory_order_acq_rel);
}

std::memory_order_acq_rel
的合法用法是什么?

c++ c++11 atomic standards memory-barriers
1个回答
0
投票

对于像

fetch_add
这样的 RMW 来说,它是有效的,可以在一次操作中加载和存储。

acq_rel
的获取部分对加载端有效,释放部分对存储端有效。

© www.soinside.com 2019 - 2024. All rights reserved.