自分の認識の話をします。
自分もにわかなので、違ったらすみません🙇♂️
メモリバリアはコンパイラの最適化などで実行順序の入れ替え戦が行われるのを抑止して、順序を指示してあげるための機構 だと思ってます。
mutexはクリティカルセクションを作るためのリソースが必要なのと
タスクの待ち合わせが起きるかと。
そのため、マルチスレッドで複数のプロセスのメモリの書き込み順を指定したい場合は
最適化された実行順序でmutexを使って待ち合わせを発生させるより
そもそもメモリの実行順序を指定してあげた方が、動作が軽くなるかと思ってます。