Что такое примитивы синхронизации

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 и других проблем многопоточности.