当我们不指定任务时,使用哪个队列来执行任务?
Which queue is used to execute a task when we don't specify it?
如果我们不指定队列来执行任务,系统会使用主队列来执行吗?更具体地说,我想知道
之间的区别
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
}
If we don't specify a queue to execute a task, will system use main queue to execute it?
不一定。当你说
let image = downloadImageFromInternet()
您已经在排队了。由于您没有另外指定,因此这是您进行调用的队列。它是什么队列取决于这段代码是如何开始的。代码启动的唯一方式最终是因为运行时调用了它。运行时在某个队列上调用您的代码。除非文档另有说明,否则这将是主队列,但请始终检查以确保。
如果我们不指定队列来执行任务,系统会使用主队列来执行吗?更具体地说,我想知道
之间的区别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
}
If we don't specify a queue to execute a task, will system use main queue to execute it?
不一定。当你说
let image = downloadImageFromInternet()
您已经在排队了。由于您没有另外指定,因此这是您进行调用的队列。它是什么队列取决于这段代码是如何开始的。代码启动的唯一方式最终是因为运行时调用了它。运行时在某个队列上调用您的代码。除非文档另有说明,否则这将是主队列,但请始终检查以确保。