gpt4 book ai didi

c++ - 在 C++ 的宽松内存模型中是否存在依赖循环的非因果行为?

转载 作者:太空狗 更新时间:2023-10-29 20:35:23 24 4
gpt4 key购买 nike

假设xy是用0初始化的原子整数。

现在,线程 A 运行以下代码:

if (x.load(memory_order_relaxed) == 1) {
y.store(1, memory_order_relaxed);
}

线程 B 运行这段代码:

if (y.load(memory_order_relaxed) == 1) {
x.store(1, memory_order_relaxed);
}

在 C++ 中,是否有可能达到 (x == 1 and y == 1) 的情况?如果它可能的,为什么?

我在 https://people.mpi-sws.org/~viktor/slides/2014-07-ec2.pdf 中看到过这种说法(依赖循环部分)。

最佳答案

好问题!

这些被称为“凭空”值,因为没有值 1 的来源。这些在 C++11 中被忽略,由论文 N3710 指出并在 C++14 中被禁止。

如 N3710 所述,

No known implementations actually produce such results.

关于c++ - 在 C++ 的宽松内存模型中是否存在依赖循环的非因果行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42969852/

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