То, что он не показывает неправильное поведение на вашей машине с вашим компилятором и вашими параметрами компилятора, не означает, чтобез ошибок.
Различный компилятор, другой вариант оптимизации или другое аппаратное обеспечение вполне могут выявить ошибку.
Условия гонки сложны в том, что часто они фактически не проявляются как проблемы (за исключением месяцев послепроизводство у вашего крупнейшего клиента поздно ночью) во многих случаях или во многих конфигурациях.Расовые условия по-прежнему являются ошибками и неопределенным поведением (что означает, что вашему компилятору разрешено предполагать, что его там нет, и он может фактически использовать это предположение и в результате слегка искажать другие части вашей программы).
Факт заключается в том, что когда несколько потоков изменяют одну и ту же переменную (или некоторые изменяют, а некоторые читают), вам необходимо для синхронизации доступа к общей переменной - всегда - чтобы бытьРаса свободна.