Что такое состояние гонки (Race condition)

Python Middle Без компании
Что такое состояние гонки (Race condition)
Ответы
Состояние гонки (Race condition) — это ошибка, возникающая, когда поведение программы зависит от порядка выполнения потоков или процессов, которые конкурируют за доступ к общим данным. Если результат зависит от непредсказуемой последовательности событий, это может привести к неожиданным и ошибочным результатам. **Пример:** ``` import threading counter = 0 def increment(): global counter for _ in range(100000): counter += 1 threads = [] for _ in range(10): thread = threading.Thread(target=increment) threads.append(thread) thread.start() for thread in threads: thread.join() print(counter) # Может быть меньше 1_000_000 ``` **Почему возникает:** Операция `counter += 1` не атомарна: - Чтение значения `counter` - Увеличение на 1 - Запись нового значения Если два потока одновременно читают одно значение, оба увеличат его на 1 и запишут одинаковый результат, потеряв одно изменение. **Решение:** Использовать блокировки (`threading.Lock`), атомарные операции или thread-safe структуры.