В Swift dispatch queues управляют выполнением задач с помощью Grand Central Dispatch (GCD). Существует два ключевых типа: serial и concurrent.
Serial queue выполняет задачи одну за другой, в порядке FIFO (First-In, First-Out). Каждая задача должна завершиться, прежде чем начнётся следующая.
let serialQueue = DispatchQueue(label: "com.example.serialQueue")
serialQueue.async { print("Task 1") }
serialQueue.async { print("Task 2") }
serialQueue.async { print("Task 3") }
// Output is always: Task 1 → Task 2 → Task 3
Concurrent queue позволяет нескольким задачам выполняться одновременно. Задачи стартуют в порядке FIFO, но могут завершиться в любом порядке — в зависимости от их продолжительности.
let concurrentQueue = DispatchQueue(label: "com.example.concurrentQueue",
attributes: .concurrent)
concurrentQueue.async { print("Task 1") }
concurrentQueue.async { print("Task 2") }
concurrentQueue.async { print("Task 3") }
// Output order is not guaranteed
Serial queues выполняют задачи одну за другой в порядке FIFO и гарантируют, что задачи всегда завершаются в том порядке, в котором они были отправлены, что делает их предсказуемыми и подходящими для предотвращения race conditions.
Новый — ещё не проверен сообществом
Вы