Вопрос проверяет понимание различий между типами очередей в многопоточной среде.
Serial (последовательные): Задачи выполняются строго по очереди, одна за другой.
Concurrent (конкурентные): Задачи могут выполняться одновременно на разных потоках.
1. Serial очередь:
Гарантирует порядок выполнения задач.
Используется для синхронизации доступа к общим ресурсам.
Пример:
let serialQueue = DispatchQueue(label: "com.example.serial")
serialQueue.async { print("Task 1") }
serialQueue.async { print("Task 2") } // Task 2 начнется только после Task 12. Concurrent очередь:
Позволяет параллельное выполнение задач.
Подходит для независимых операций.
Пример:
let concurrentQueue = DispatchQueue(label: "com.example.concurrent", attributes: .concurrent)
concurrentQueue.async { print("Task 1") }
concurrentQueue.async { print("Task 2") } // Task 1 и Task 2 могут выполняться одновременноВывод:
Serial очереди обеспечивают порядок, concurrent — повышают производительность.