[C++] AtomicsのC ++メモリバリア


Answers

フェンスのハードウェアレベルのセマンティクスについて私の答えを見てください。 何も言及されていないのは、コンパイルレベルとハードウェアレベルの両方で、フェンスをまたいでロード、ストア、ロード&ストア(フェンスに応じて)の並べ替えを防ぐことです。

Question

私はこれについては初心者です。 誰も次のメモリバリアの違いを簡単に説明できますか?

  • ウィンドウのMemoryBarrier();
  • フェンス_mm_mfence();
  • インラインアセンブリasm volatile ("" : : : "memory");
  • 本質的な_ReadWriteBarrier();

簡単な説明がないと、良い記事や本へのリンクが、私がそれをまっすぐにするのに役立つでしょう。 これまでは、これらの呼び出しをラッピングする他の人が書いたオブジェクトを使っても問題ありませんでしたが、基本的にはメモリバリアを実装する方法が複数あります。