Data race - это состояние, при котором несколько потоков или процессов одновременно обращаются к одной и той же области памяти (переменной, объекту) и хотя бы один из них выполняет запись, без какой-либо синхронизации доступа.
Последствия data race непредсказуемы и могут включать:
Пример data race на Swift:
swift
Способы предотвращения data race:
NSLock, os_unfair_lock.pthread_mutex.DispatchSemaphore.DispatchQueue(label: "myQueue", attributes: .concurrent) с .barrier флагом при записи.@synchronized.AtomicBool.NSCache или специализированные библиотеки.