Можешь привести пример состояния гонки?

Пример гонки: два процесса одновременно читают остаток 1 и оба разрешают покупку. Результат зависит от порядка чтения и записи, а товар продаётся дважды.

Короткий ответ

Что ответить на собеседовании

Пример гонки: два процесса одновременно читают остаток 1 и оба разрешают покупку. Результат зависит от порядка чтения и записи, а товар продаётся дважды.

Подробный разбор

Ответ с пояснениями

Пример гонки: два процесса одновременно читают остаток 1 и оба разрешают покупку. Результат зависит от порядка чтения и записи, а товар продаётся дважды.

Простая проверка если остаток > 0 отдельно от уменьшения не атомарна. Защитой может быть условное обновление UPDATE ... SET stock = stock - 1 WHERE stock > 0 с проверкой числа изменённых строк в нужной транзакции. Также применяют блокировки или оптимистическую версию. Одного локального mutex недостаточно, если несколько экземпляров приложения обращаются к общей базе.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее