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

Что предотвращает использование примитивов синхронизации

В Python примитивы синхронизации (например, Lock, RLock, Semaphore) предотвращают состояние гонки (race condition), когда несколько потоков одновременно пытаются изменить общие данные. Основные проблемы, которые они решают:

  1. Race Condition – когда результат выполнения зависит от порядка выполнения потоков.
  2. Data Corruption – одновременная запись в одну переменную разными потоками.
  3. Deadlocks – если неаккуратно использовать блокировки (например, захватывать Lock без release).

Пример с Lock:

python
from threading import Lock, Thread

counter = 0
lock = Lock()

def increment():
    global counter
    with lock:  # Автоматически acquire/release
        counter += 1

threads = [Thread(target=increment) for _ in range(100)]
[t.start() for t in threads]
[t.join() for t in threads]
print(counter)  # Всегда 100

Без Lock результат мог бы быть меньше 100 из-за race condition.

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

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

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

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