x86系CPUで普通のメモリへの読み書きで順番が入れ替わる可能性があるのは write => read だけ

これ以外だったり同期が必要なければ
排他制御は不要

もちろん、
一連のデータリードでデータの一貫性が必要であれば一貫性確認の仕組みなり排他制御なりは当然必要だし、
コンパイラが読み書きを省略する可能性のあるコードであれば
volatileを付けるなど、省略を防ぐ必要はある

ymmレジスタを使えばアトミックな読み書きが出来るので
256bit以内なら一貫性も保てる

マルチコアARMの場合は
DMB命令を入れておけば確実

パフォーマンスに問題が無い箇所であれば、
移植性の為にも、素直にC++の排他制御を入れておこう!