Memory ordering — порядок, в котором записи одного процессора видны другим. CPU и компилятор могут переупорядочивать инструкции для оптимизации. Без барьеров: горутина A записала x=1, потом y=2, но горутина B может увидеть y=2 до x=1. В Go модель памяти проще чем C++: happens-before гарантируется через каналы, mutex, atomic операции. Если синхронизируешь через эти примитивы — всё корректно. Без них — data race, поведение не определено.