Имейте в виду, что вы действительно спрашиваете об очередях и потоках больше, чем обработчики завершения и замыкания.Код любого типа выполняется в очереди (которая состоит из одного или нескольких потоков).В этом отношении нет ничего особенного в закрытиях обработчиков завершения.
Q1 - Большинство iOS SDK предоставляют обработчики завершения, вызываемые в фоновой очереди, но не делайте этого предположения, если в документации не указано, в какую очередь они вызваны,Даже URLSession
можно настроить для работы в определенной очереди, включая основную очередь.
Q1.1 - Написанные вами замыкания выполняются в любой очереди, из которой вы их вызываете.Нет волшебства, которое заставляет их работать в фоновой очереди.
Q2 - Первый поток всегда является единственным потоком основной очереди.Все остальные темы из фоновых очередей.Каждый поток может иметь любой приоритет, который был назначен на основе свойств его очереди.
Для получения более подробной информации вы должны просмотреть документацию Dispatch , особенно DispatchQueue
.