是否有必要始终配对获取和释放障碍?是否存在任何可能在没有对应对的情况下发生的真实情况(包括同时满足两者的完整内存障碍)?我知道 C++11 内存模型规定此类未配对的程序不是无数据竞争的,但情况总是如此吗?
例如,linux kernel's documentation on memory barriers states :
An ACQUIRE operation should almost always be paired with a RELEASE operation.
为什么说“几乎总是”而不是“总是”?
最佳答案
典型的边缘情况是当您有 2 个 ACQUIRE
匹配单个 RELEASE
时。没有严格配对,但这可能会简化一些代码流,否则您需要保留标志,说明 ACQUIRE
正在等待中。
关于c++ - 是否存在在没有其他匹配障碍的情况下单独发生获取或释放障碍的情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27792476/