Встречается на собеседованиях • сегодня
Что такое DeadLock
DeadLock (взаимная блокировка) — ситуация, когда два или более потока/процесса бесконечно ожидают ресурсы, захваченные друг другом, и не могут продолжить выполнение.
Пример на Python с использованием threading:
python
import threading
lock1 = threading.Lock()
lock2 = threading.Lock()
def thread1():
with lock1:
print("Thread 1 acquired lock1")
with lock2: # Блокируется, если lock2 уже захвачен
print("Thread 1 acquired lock2")
def thread2():
with lock2:
print("Thread 2 acquired lock2")
with lock1: # Блокируется, если lock1 уже захвачен
print("Thread 2 acquired lock1")
t1 = threading.Thread(target=thread1)
t2 = threading.Thread(target=thread2)
t1.start()
t2.start()
t1.join()
t2.join()
text
**Причины DeadLock:**
1. Условие взаимного исключения (ресурсы не могут быть разделены).
2. Удержание и ожидание (поток держит один ресурс и ждет другой).
3. Отсутствие вытеснения (ресурсы нельзя отобрать у потока).
4. Круговая зависимость (потоки блокируют друг друга по цепочке).
**Решение:**
- Упорядочивание блокировок (всегда захватывать `lock1` перед `lock2`).
- Использование таймаутов (`lock.acquire(timeout=5)`).
- Применение контекстных менеджеров (`with`).
- Алгоритмы предотвращения (например, Banker’s algorithm).
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы