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

Что такое состояние гонки (Race condition)

Состояние гонки (Race condition) — это ошибка, возникающая, когда поведение программы зависит от порядка выполнения потоков или процессов, которые конкурируют за доступ к общим данным. Если результат зависит от непредсказуемой последовательности событий, это может привести к неожиданным и ошибочным результатам.

Пример:

python
import threading

counter = 0

def increment():
    global counter
    for _ in range(100000):
        counter += 1

threads = []
for _ in range(10):
    thread = threading.Thread(target=increment)
    threads.append(thread)
    thread.start()

for thread in threads:
    thread.join()

print(counter)  # Может быть меньше 1_000_000

Почему возникает:
Операция counter += 1 не атомарна:

  1. Чтение значения counter
  2. Увеличение на 1
  3. Запись нового значения

Если два потока одновременно читают одно значение, оба увеличат его на 1 и запишут одинаковый результат, потеряв одно изменение.

Решение:
Использовать блокировки (threading.Lock), атомарные операции или thread-safe структуры.

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

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

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

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