Состояние гонки (англ. race condition) — ситуация, возникающая в многопоточных или многопроцессных системах, когда результат выполнения программы зависит от порядка, в котором выполняются части кода, работающие с разделяемыми ресурсами (например, переменными или файлами).
Причина – неатомарные операции над разделяемыми данными без должной синхронизации.
Пример: инкремент общей переменной двумя потоками.
c
В данном случае, если оба потока прочитают значение shared_variable (0) до того, как один из них успеет записать измененное значение, конечный результат будет 1 вместо ожидаемых 2.
Последствия могут быть непредсказуемыми и трудновоспроизводимыми ошибками.
Способы предотвращения: