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