C++11中memory_order_consume的目的
原文: The Purpose of memory_order_consume in C++11 在C++11标准原子库中,大多数函数接收一个memory_order参数: enum memory_order { memory_order_relaxed, memory_order_consume, memory_order_acquire, memory_order_release, memory_order_acq_rel, memory_order_seq_cst }; 上面的值被称为 内存顺序约束 。每一个都有自己的目的。在它们之中,memory_order_consume很可能是最少被正确理解的。它是最复杂的排序约束,也最难被正确使用。尽管如此,然而还是吸引着好奇的程序员去弄懂它--或者只是想解开它的神秘面纱。这就是这篇文章的目的所在。 首先,让这个术语直白着:一个使用memory_order_consume的操作具有 消费语义 (consume semantics)。我们称这个操作 为消费操作 (consume operations)。 也许对于memory_order_consume最的价值的观察结果就是总是可以安全的将它替换成memory_order_acquire。那是因为 获取操作 (acquire operations)提供了消费操作(consume