запускает обработчики завершения в главной очереди, и вы можете видеть, что у него есть цикл выполнения в фоновом потоке.
м, я создал экземплярURLSessionTask
:
let task = URLSession.shared.dataTask(with: url) { (data, response, error) in
print (\(Thread.current))
}
// I start the task by
task.resume()
Я хочу понять, является лиURLSessionTask
экземпляр работает наглавный нить по умолчанию или вфон нить. Итак, я печатаюThread.current
.
Когда я запускаю свой код, он распечатывает:
<NSThread: 0x170273980>{number = 4, name = (null)}
Мои вопросы:
какая нитьURLSessionTask
работает по умолчанию? Основная тема или фоновая тема?
Почему текущий поток показывает ноль в потокеname
? Означает ли это, что по умолчанию он работает в фоновом потоке? (Вижу name = "main" дляprint
в основной теме)
В общем, нужно ли бежатьURLSessionTask
с GCD, чтобы заставить его работать в фоновом потоке или нет? Я спрашиваю об этом, потому что я видел, что некоторые учебники не используют GCD для запускаURLSessionTask
, они используют только GCD для запуска обработчика завершения в главном потоке.