Data race — одновременный conflicting access к памяти без синхронизации (UB/undefined behavior в модели); race condition — логическая гонка на уровне алгоритма даже без data race.
Разбор
- Swift concurrency стремится исключить data races через типы.
- Lock/actor устраняют data race, но не все логические гонки.
- TSAN ловит многие data races в runtime.
- UI glitches часто логические гонки порядка событий.
Итог
Data race — про память; race condition — про логику порядка событий.