Вопрос проверяет знание инструментов для безопасной работы с потоками.
DispatchQueue — очереди для синхронизации.
NSLock — блокировки.
Semaphore — контроль доступа к ресурсам.
Основные примитивы:
Serial DispatchQueue:
Гарантирует последовательное выполнение задач.
let safeQueue = DispatchQueue(label: "com.example.safeQueue")
safeQueue.async { /* код */ }NSLock:
Блокирует доступ к ресурсу.
let lock = NSLock()
lock.lock()
// Критическая секция
lock.unlock()Semaphore:
Ограничивает число потоков для ресурса.
let semaphore = DispatchSemaphore(value: 1)
semaphore.wait()
// Доступ только для одного потока
semaphore.signal()Вывод:
Выбор примитива зависит от задачи. Очереди (DispatchQueue) — самый удобный вариант.