Встречается на 1% собеседований по Python
Как решить проблему кольцевой блокировки
Кольцевая блокировка (deadlock) возникает, когда несколько потоков/процессов блокируют друг друга, ожидая освобождения ресурсов. Основные способы решения:
- Упорядочивание блокировок - всегда захватывать мьютексы в одинаковом порядке:
python
lock1 = threading.Lock()
lock2 = threading.Lock()
def thread1():
with lock1, lock2: # Всегда сначала lock1, потом lock2
pass
text
2. **Таймауты** - использовать `acquire(timeout)` вместо бесконечного ожидания:
```python
if lock1.acquire(timeout=1):
try:
if lock2.acquire(timeout=1):
# Работа с ресурсами
lock2.release()
finally:
lock1.release()-
Разрушение - принудительно освобождать ресурсы, если deadlock обнаружен.
-
Избегание - алгоритмы вроде Banker's Algorithm для предсказания deadlock.
-
Использование RLock - рекурсивные блокировки в одном потоке.

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