Back to questions
Junior — Middle
88
Можете объяснить, что подразумевается под взаимной блокировкой в системе?
Answer from AI
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")
Здесь оба потока могут заблокироваться, если захватят блокировки в разном порядке.