Встречается на собеседованиях • сегодня

Какие знаешь способы разрешения Deadlock

Вот основные способы разрешения deadlock в Python:

  1. Упорядоченное получение блокировок - всегда запрашивать блокировки в одном порядке:
python
lock1 = threading.Lock()
lock2 = threading.Lock()

def thread1():
    with lock1:
        with lock2:
            # работа с ресурсами

def thread2():
    with lock1:  # тот же порядок
        with lock2:
            # работа с ресурсами
  1. Таймауты - использовать acquire(timeout) вместо бесконечного ожидания:
python
if lock1.acquire(timeout=1):
    try:
        if lock2.acquire(timeout=1):
            # работа
    finally:
        lock1.release()
  1. Разрушение deadlock - принудительное освобождение ресурсов через watchdog timer.

  2. Избегание вложенных блокировок - перепроектирование кода для минимизации блокировок.

  3. Использование RLock - реентерабельные блокировки для одного потока.

  4. Thread-safe структуры - использование Queue вместо ручных блокировок.

Важно: лучшая стратегия - профилактика через проектирование системы без условий для deadlock.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы