Встречается на собеседованиях • сегодня
Как решить проблему кольцевой блокировки
Кольцевая блокировка (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
интервью вопросы и ответы