🔹 Гонка состояний: кто успеет первым? 🔹 Что такое 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
#фикс с mutexcnt = 0 lock = threading.Lock() def inc2(): global cnt for _ in range(100000): with lock: cnt += 1
📚 Для middle: сначала попробуйте блокировки; если узкое место — переходите на атомарные операции, очереди или транзакции.
#CODERIKK #ErikkKollil #Middle
➡️ Мы в Telegram - Сетке - ВК Буду рад вашей реакции здесь⬇️
В этом посте были ссылки, но мы их удалили по правилам Сетки