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

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

В Python основные примитивы синхронизации из модуля threading:

  1. Lock - базовый мьютекс (блокировка). Позволяет только одному потоку выполнять код.
python
lock = threading.Lock()
with lock:
    # критическая секция
  1. RLock - реентерабельный лок. Позволяет одному потоку захватывать его несколько раз.
  1. Semaphore - ограничивает количество потоков, которые могут получить доступ к ресурсу.
python
sem = threading.Semaphore(3)  # максимум 3 потока
with sem:
    # работа с ресурсом
  1. Event - механизм оповещения между потоками.
python
event = threading.Event()
# поток 1 ждет
event.wait()
# поток 2 устанавливает
event.set()
  1. Condition - более сложный механизм ожидания/оповещения, связанный с блокировкой.
python
cond = threading.Condition()
with cond:
    while not resource_available:
        cond.wait()
    # работа с ресурсом
  1. Barrier - синхронизирует группу потоков в определенной точке.

Для межпроцессной синхронизации аналогичные примитивы есть в модуле multiprocessing.

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

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

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

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