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

Как и когда происходит Deadlock

Deadlock возникает, когда два или более потока/процесса бесконечно ожидают ресурсы, занятые друг другом, создавая циклическую зависимость. Основные условия для deadlock:

  1. Взаимное исключение - ресурсы не могут быть разделены
  2. Удержание и ожидание - процесс держит ресурс и ждет другой
  3. Отсутствие вытеснения - ресурсы нельзя отобрать
  4. Циклическое ожидание - круговая зависимость процессов

Пример:

python
import threading

lock1 = threading.Lock()
lock2 = threading.Lock()

def thread1():
    with lock1:
        with lock2:
            print("Thread1")

def thread2():
    with lock2:
        with lock1:
            print("Thread2")

t1 = threading.Thread(target=thread1)
t2 = threading.Thread(target=thread2)
t1.start(); t2.start()

Здесь потоки могут заблокироваться: t1 захватит lock1 и будет ждать lock2, а t2 захватит lock2 и будет ждать lock1.

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

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

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

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