Для обеспечения потокобезопасности в iOS используются следующие основные механизмы:
Mutex (мьютекс):
pthread_mutex_t: Низкоуровневый C API из POSIX.NSLock: Объектно-ориентированная обёртка над примитивами блокировки, часть Foundation.NSRecursiveLock: Разрешает рекурсивную блокировку одним и тем же потоком.swift
Spin Lock:
OSSpinLock: Устаревший и нерекомендованный из-за проблем с приоритетами и избыточного потребления CPU при длительном ожидании. Заменён на os_unfair_lock.os_unfair_lock: Более эффективная замена OSSpinLock, часть os.xnu.swift
Semaphore (семафор):
DispatchSemaphore: Семафор из Grand Central Dispatch (GCD). Управляет доступом к ресурсу по счётчику.swift
Concurrent Queue с Barrier Tasks:
async), запись — эксклюзивно (sync(flags: .barrier)).swift
Atomic Operations:
swift
Atomic<Value> в swift-atomics.Thread Sanitizer:
Выбор механизма зависит от задачи:
NSLock, DispatchSemaphore(value: 1), os_unfair_lock.NSRecursiveLock..barrier.DispatchSemaphore (со счётчиком > 1).Избегать следует:
OSSpinLock.