大中心调度,QOS用户交互vs get主队列



我正在做一个关于中央调度的教程。从本质上讲,讲师在闭包中有一些代码,这些代码是长时间运行的任务,所以他把所有东西都放在后台队列中(代码太长了,无法编写,没有提供源代码)。简而言之,他有这样的格式

dispatch_async(QOS_CLASS_BACKGROUND,  {
    //time consuming tasks which should not be on main queue
})

然而,在闭包中,所有东西都在后台队列中,有一些代码更新了用户界面。我被教导(主要是udacity),所有的UI更新都应该在主队列上。因此

dispatch_async(dispatch_get_main_queue(), ...

,虽然讲师,而不是使用

dispatch_get_global_queue(QOS_CLASS_USER_INTERACTIVE, 0), {...}

我理解这是合适的,因为QOS_CLASS_USER_INTERACTIVE是指与用户界面链接的即时任务。然而,与get_main_queue相比,使用它的优势是什么呢?

dispatch_get_global_queue(QOS_CLASS_USER_INTERACTIVE, 0)返回全局并发队列,适用于需要"快速"完成以便更新的任务用户界面。此队列上的任务优先级高于a队列上的任务QOS_CLASS_BACKGROUND队列。但是这是而不是

UI更新本身必须在你使用的主队列上完成dispatch_get_main_queue() .

最新更新