我開始學習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