Назад к вопросам
Junior — Middle
67
Можете объяснить механизм работы синхронных операций в последовательной очереди?
Компании, где спрашивали
БКС
Ответ от нейросети
sobes.tech AI
В iOS последовательная очередь (serial queue) выполняет задачи строго по одной, в порядке добавления. Синхронная операция (sync) на такой очереди блокирует текущий поток до завершения выполнения задачи.
Механизм работы:
- Когда вызывается
queue.sync { ... }, текущий поток передает задачу в очередь и ждет, пока она выполнится. - В последовательной очереди задачи выполняются по очереди, поэтому если
syncвызывается из того же потока, который обслуживает очередь, может возникнуть дедлок.
Пример:
let serialQueue = DispatchQueue(label: "com.example.serial")
serialQueue.sync {
print("Выполнение задачи 1")
}
print("Задача 1 выполнена, продолжаем")
Здесь поток, вызвавший sync, заблокируется, пока задача не выполнится. Это полезно, когда нужно выполнить работу в очереди и дождаться результата, но требует осторожности, чтобы не вызвать блокировку из самой очереди.