Что такое примитивы синхронизации
Python
Senior
Без компании
Что такое примитивы синхронизации
Ответы
Примитивы синхронизации — это базовые механизмы, обеспечивающие корректное взаимодействие потоков или процессов при работе с общими ресурсами. Основные примитивы в Python:
- **Lock (блокировка)** — самый простой примитив. Позволяет только одному потоку выполнять критическую секцию кода.
```
from threading import Lock
lock = Lock()
with lock:
# Критическая секция
```
- **RLock (реентерабельная блокировка)** — позволяет одному потоку захватывать блокировку несколько раз.
- **Semaphore** — ограничивает количество потоков, которые могут одновременно получить доступ к ресурсу.
```
from threading import Semaphore
sem = Semaphore(3) # Макс 3 потока
sem.acquire()
# Работа с ресурсом
sem.release()
```
- **Event** — механизм оповещения между потоками. Один поток ждёт событие, другой его устанавливает.
```
from threading import Event
event = Event()
# Поток 1:
event.wait() # Блокируется до set()
# Поток 2:
event.set() # Разблокирует ожидающие потоки
```
- **Condition** — более сложный механизм, позволяющий потокам ждать определённого условия.
```
from threading import Condition
cond = Condition()
with cond:
while not resource_available():
cond.wait() # Освобождает lock и ждёт
# Работа с ресурсом
```
Эти примитивы помогают избежать race conditions, deadlocks и других проблем многопоточности.