Sobes.tech
Назад к вопросам
Junior — Middle
89

Можете объяснить, что подразумевается под взаимной блокировкой в системе?

Ответ от нейросети

sobes.tech AI

Взаимная блокировка (deadlock) — ситуация в многопоточной или многопроцессной системе, когда два или более процесса (или потока) ждут освобождения ресурсов, занятых друг другом, и ни один из них не может продолжить работу.

Пример: процесс A захватил ресурс 1 и ждёт ресурс 2, а процесс B захватил ресурс 2 и ждёт ресурс 1. Оба процесса блокированы навсегда.

В программировании на Python взаимная блокировка может возникнуть при использовании потоков и блокировок (Lock). Чтобы избежать deadlock, нужно:

  • Стараться захватывать блокировки в одном и том же порядке.
  • Использовать таймауты при ожидании блокировок.
  • Минимизировать количество одновременно захватываемых ресурсов.
import threading

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

# Возможный deadlock

def thread1():
    with lock1:
        with lock2:
            print("Thread 1 acquired both locks")

def thread2():
    with lock2:
        with lock1:
            print("Thread 2 acquired both locks")

Здесь оба потока могут заблокироваться, если захватят блокировки в разном порядке.