Описание тега tearing
Проблема с операциями с 64-битным значением, не являющимися атомарными на 32-битных машинах
На 32-битных машинах одновременно записываются только 32 бита.
Если вы пишете 64-битное значение на 32-битной машине и записываете по одному и тому же адресу в одно и то же время в двух разных потоках, у вас фактически есть четыре записи, а не две, потому что запись выполняется по 32 бита за раз.
Следовательно, потоки могут участвовать в гонке, и когда дым очищается, переменная содержит верхние 32 бита, записанные одним потоком, и нижние 32 бита, записанные другим. Таким образом, вы можете записать 0xDEADBEEF00000000 в одном потоке и 0x00000000BAADF00D в другом, и в итоге в памяти останется 0x0000000000000000.
См. Этот вопрос для примера кода, отображающего разрыв в C#.