Статьи

Что такое race condition?

Race Condition переводится с английского как «условия гонки» (если дословно) или состояние гонки. Часто говорят просто — гонка. Это понятие используется IT-специалистами, чтобы объяснить вызванное этим явлением поведение системы: когда одно событие происходит раньше другого (хотя не должно), и при этом такое поведение плавающее, то есть может проявляться или нет в зависимости от условий работы (скорости работы ПО, количества одновременных запросов и др.), или просто как «карта ляжет». Потому и называется гонка - никогда не понятно, какой запрос прибежит первым. Такая ошибка часто встречается в многопоточных системах, где потоки могут перегонять друг друга в очереди на доступ и изменение данных, переменных и тп.

Когда говорят там был рейс кондишн, все сразу понимают, что между какими-то событиями или запросам произошла гонка: то есть одно событие произошло быстрее другого, что привело к неправильному состоянию системы, порче данных и тп.
Например, пользователь еще не создался , а его уже запросили. Или при одновременной оплате дебетовой картой вам удалось уйти в минус, потому что пока первая оплата не снялась, произошла и была разрешена (так как на счету еще было достаточно средств) вторая. Эта разница во времени для человека очень маленькая — она может измеряться наносекундами. А для компьютера определяет порядок действий. Таким образом, из-за таких ошибок вы можете встречать странные, плавающие баги, чёткие шаги воспроизведения для которых довольно сложно определить и нужно тщательно исследовать систему, чтобы полностью разобраться.