Can non-atomic-load be reordered after atomic-acquire-load?

后端 未结 4 1069
灰色年华
灰色年华 2021-01-02 22:28

As known in since C++11 there are 6 memory orders, and in documentation written about std::memory_order_acquire:

  • http://en.cppreference.com/w/cpp/
4条回答
  •  南笙
    南笙 (楼主)
    2021-01-02 23:13

    Just to answer your headline question: yes, any loads (whether atomic or non-atomic) can be re-ordered after an atomic load. Similarly any stores can be re-ordered before an atomic store.

    However, an atomic store is not necessarily allowed to be re-ordered after an atomic load or vice verse (atomic load re-ordered before atomic store).

    See Herb Sutter's talk around 44:00.

提交回复
热议问题