x
以下 C++ 代码片段中的变量可能的最终结果是什么?(请根据 C++ 标准允许的内容而不是当前在不同平台上可用的内容来回答)
// Inside Thread 0
std::atomic<int> x = {2};
// Inside Thread 1
x.fetch_sub(1,std::memory_order_relaxed)
// Inside Thread 2
x.fetch_sub(1,std::memory_order_relaxed)
理想情况下,我希望x
最后为零。是这样吗,即使我正在使用std::memory_order_relaxed
?
编辑:为了使问题更准确,是否保证 1)在线程 1 和 2 中,返回值是 0 或 1,以及 2)线程 1 和 2 中的返回值不同。