? 🔹 Что такое race condition и почему порядок (order) операций ломает результат? 🔸 Race condition — ошибка, когда параллельные задачи меняют общее состояние без синхронизации; результат зависит от непредсказуемого порядка выполнения, и данные «теряются» или становятся неконсистентными. 🔸 Симптомы: нерепродуцируемые баги, пропавшие обновления, поведение меняется с нагрузкой; встречается в потоках, процессах, асинхронном коде и транзакциях. 🔸 Locking и mutex (mutual exclusion — взаимное исключение) решают проблему, сериализуя доступ к критической секции. Минусы: задержки, contention и риск deadlock — держите секции короткими. 🔸 Минипример (Python): сначала race, затем защита mutex'ом. import threading cnt = 0 def inc(): global cnt for _ in range(100000): cnt += 1 threads = [threading.Thread(target=inc) for _ in range(4)] for t in threads: t.start() for t in threads: t.join() print(cnt) # обычно < 400000 из-за race condition # фикс с mutex cnt = 0 lock = threading.Lock() def