Какая очередь используется для выполнения задачи, когда мы ее не указываем? - PullRequest
0 голосов
/ 28 марта 2020

Если мы не указываем очередь для выполнения задачи, будет ли система использовать основную очередь для ее выполнения? В частности, я хочу знать разницу между

DispatchQueue.global(qos: .background).async {
    let image = downloadImageFromInternet()
    DispatchQueue.main.async {
        self.myImageView.image = image
    }
}

и

let image = downloadImageFromInternet() //didn't specify a queue to execute this
DispatchQueue.main.async {
    self.myImageView.image = image
}

1 Ответ

0 голосов
/ 28 марта 2020

Если мы не указываем очередь для выполнения задачи, будет ли система использовать основную очередь для ее выполнения?

Не обязательно. Когда вы говорите

let image = downloadImageFromInternet()

, вы уже в какой-то очереди. Поскольку вы не укажете иначе, это очередь, в которой вы делаете вызов. Какая это очередь, зависит от того, как этот код был запущен. Единственный способ, которым код когда-либо запускается, в конечном счете, потому что среда выполнения назвала его Среда выполнения вызывает ваш код в некоторой очереди. Если в документации не указано иное, это будет основная очередь, но всегда проверяйте, чтобы убедиться.

...