🔹 Гонка состояний: кто успеет первым? 🔹 Что такое 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 inc2(): global cnt for _ in range(100000): with lock: cnt += 1

📚 Для middle: сначала попробуйте блокировки; если узкое место — переходите на атомарные операции, очереди или транзакции.

#CODERIKK #ErikkKollil #Middle

➡️ Мы в Telegram - Сетке - ВК Буду рад вашей реакции здесь⬇️


В этом посте были ссылки, но мы их удалили по правилам Сетки

🔹 Гонка состояний: кто успеет первым?
🔹 Что такое race condition и почему порядок (order) операций ломает результат?
🔸 Race condition — ошибка, когда параллельные задачи меняют общее состояние без син... | Сетка — социальная сеть от hh.ru