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

Где встречается Race Condition

Race Condition возникает, когда несколько потоков/процессов одновременно обращаются к общим данным, и результат зависит от порядка выполнения операций. Частые сценарии:

  1. Банковские транзакции: два потока одновременно снимают деньги с одного счета, но проверка баланса происходит до списания.
python
balance = 100

def withdraw(amount):
    global balance
    if balance >= amount:
        # Между проверкой и списанием может вклиниться другой поток
        balance -= amount
  1. Счетчики/агрегация: несколько воркеров инкрементят общий счетчик.

  2. Кэширование: два запроса одновременно проверяют кэш, не находят данные и начинают вычисления.

  3. Инициализация: проверка if not initialized может пройти в нескольких потоках до установки флага.

Для предотвращения используют блокировки (Lock, RLock), атомарные операции, транзакции или thread-safe структуры (Queue). В asyncio - аналогичные механизмы, но без GIL.

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

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

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

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