我开始学习OpenMP并发现了#pragma omp atomic
指令。OpenMP原子内存顺序
我对C++ 11的原子知识有基本的了解,并且知道您可以将memory_order
参数传递给原子的方法。 纠正我,如果我错了,但我认为这允许使用原子作为同步点,例如,如果使用memory_order_seq_cst
。
一些限制性较小的内存顺序,如memory_order_relaxed
只是确保原子上的操作是同步的并且对其他人可见。它不关心其他内存更新。
我想知道OpenMP的atomic指令使用了什么内存顺序。它只会同步对原子的访问,还是会作为内存同步的要点?
我的猜测是,它会更像memory_order_relaxed
,因为critical
的这里是提供完全同步。
我欢迎任何好的解释/信息。 谢谢。
可能重复的[openMP,原子vs关键?](http://stackoverflow.com/questions/7798010/openmp-atomic-vs-critical) – JustSid
@JustSid这主要考虑锁vs无锁同步原语,但不解释记忆顺序。 – Xaqq