Встречается на собеседованиях • сегодня
Как исправить DeadLock
Deadlock возникает, когда два или более потока блокируют друг друга, ожидая освобождения ресурсов. Вот основные способы исправить deadlock:
- Упорядочивание блокировок - всегда захватывать блокировки в одинаковом порядке:
python
lock1 = threading.Lock()
lock2 = threading.Lock()
# Правильно:
with lock1:
with lock2:
# код- Использование таймаутов -
acquire(timeout)вместо бесконечного ожидания:
python
if lock1.acquire(timeout=1):
try:
if lock2.acquire(timeout=1):
try:
# код
finally:
lock2.release()
finally:
lock1.release()-
Избегание вложенных блокировок - рефакторинг кода для минимизации областей с блокировками.
-
Использование
RLock- реентерабельные блокировки для повторного входа в тот же поток. -
Проектирование без блокировок - использование thread-safe структур данных или асинхронных подходов.
Лучшая практика - всегда освобождать блокировки в finally-блоке и минимизировать время удержания блокировки.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы