c++ - 是否存在在没有其他匹配障碍的情况下单独发生获取或释放障碍的情况?

标签 c++ multithreading c++11 linux-kernel atomic

是否有必要始终配对获取和释放障碍?是否存在任何可能在没有对应对的情况下发生的真实情况(包括同时满足两者的完整内存障碍)?我知道 C++11 内存模型规定此类未配对的程序不是无数据竞争的,但情况总是如此吗?

例如,linux kernel's documentation on memory barriers states :

An ACQUIRE operation should almost always be paired with a RELEASE operation.

为什么说“几乎总是”而不是“总是”?

最佳答案

典型的边缘情况是当您有 2ACQUIRE 匹配单个 RELEASE 时。没有严格配对,但这可能会简化一些代码流,否则您需要保留标志,说明 ACQUIRE 正在等待中。

关于c++ - 是否存在在没有其他匹配障碍的情况下单独发生获取或释放障碍的情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27792476/

相关文章:

c++ - 从临时对象创建一对

c++ - 融合三角循环进行并行化,计算子索引

c++ - VC++/C++ 高性能多线程GUI交易注意事项

java - Java 中多线程同步不起作用

c++ - 嵌套名称说明符中第一个 namespace 名称的名称查找?

C++ - 在模板化函数指针参数调用中确定 foo 的实例

c++ - visual studio 找不到 std :map during linkage

使用参数 vector 调用函数的 C++ 模板

java - 如果线程不会自行停止,如何停止它?

ios - 如何知道哪些应用程序在后台