Ответ
Главная очередь (Main Queue/DispatchQueue.main) в iOS является последовательной (serial).
Это означает, что задачи, добавленные в эту очередь, выполняются строго по порядку, одна за другой, в рамках главного потока (Thread 1).
Почему это важно?
- UIKit не потокобезопасен. Все операции с пользовательским интерфейсом (обновление лейблов, анимации, обработка касаний) должны выполняться на главной очереди.
- Гарантирует последовательность и предсказуемость обновлений UI.
Пример:
// Задачи будут выполнены строго в порядке их добавления.
DispatchQueue.main.async {
print("Task 1: Обновляем текст лейбла")
}
DispatchQueue.main.async {
print("Task 2: Запускаем анимацию")
}
// Вывод всегда будет: "Task 1", затем "Task 2"
Ключевые отличия от параллельной (concurrent) очереди:
- Последовательная: Одна задача за раз. Используется для синхронизации доступа к ресурсам или, как в случае с Main Queue, для работы с UI.
- Параллельная: Может запускать несколько задач одновременно (если система имеет доступные потоки). Используется для фоновых вычислений.