DevPrep

Все темы › Многопоточность и асинхронное программирование

Что такое race condition и как её лечить (3 способа)?

Middle PRO

Суть

Race condition — результат программы зависит от того, в каком порядке потоки доберутся до общих данных, и этот порядок не контролируется. Частный и самый опасный случай — data race: два потока одновременно обращаются к одной памяти, хотя бы один пишет, и нет синхронизации. Data race — undefined behavior (повреждённые структуры, крэши). Race condition может быть и без data race: например, check-then-act («проверил, что ключа нет, добавил» — а между проверкой и добавлением кто-то уже добавил).

Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.

Полный ответ — в DevPrep

Потренируйтесь перед собеседованием

В DevPrep эти ответы превращаются в задачи на минуту: что напечатает код, найди баг, пробное собеседование. По задаче в день.

Скачать DevPrep в App Store