Что такое состояние взаимоблокировки

Python Senior Без компании
Что такое состояние взаимоблокировки
Ответы
Взаимоблокировка (deadlock) — ситуация, когда два или более потока/процесса бесконечно ожидают освобождения ресурсов, заблокированных друг другом. **Условия для deadlock:** - Взаимное исключение (ресурс занят одним потоком). - Удержание и ожидание (поток держит ресурс и ждёт другой). - Отсутствие вытеснения (ресурс нельзя отнять). - Циклическое ожидание (замкнутый круг зависимостей). **Пример на Python:** ``` import threading lock1 = threading.Lock() lock2 = threading.Lock() def thread1(): with lock1: with lock2: print("Thread1") def thread2(): with lock2: with lock1: print("Thread2") t1 = threading.Thread(target=thread1) t2 = threading.Thread(target=thread2) t1.start(); t2.start() ``` **Решение:** - Упорядочивание блокировок (одинаковый порядок захвата). - Таймауты на `acquire()`. - Использование `RLock` или менеджеров контекста.