dispatch_get_main_queue和dispatch_get_global_queue之间的区别

时间:2013-06-27 19:38:39

标签: ios grand-central-dispatch

我刚刚开始在iOS上工作,并且已经在GCD上浏览了Apple Reference材料。 dispatch_get_global _queue返回一个可以提交要执行的块的并发队列。

但是,我们也可以使用dispatch_get_main_queue来实现相同的目标,对吗?那么,dispatch_get_global_queuedispatch_get_main_queue之间究竟有什么区别?

2 个答案:

答案 0 :(得分:9)

全局队列是后台队列,并在非主线程上执行其块。主队列在主线程上执行其块。

您应该将不涉及更改的后台工作放在全局队列上的用户界面上,但是当块对用户界面进行更改时使用主队列。例如,一种非常常见的模式是在全局队列上执行“工作”块,并让工作块本身调度回主队列以更新进度指示器。

答案 1 :(得分:4)

dispatch_get_main_queue - 当您想要操纵UI元素时应该使用它。 (它获得一个后台队列,您可以调度异步运行的后台任务......它不会阻止您的用户界面)

dispatch_get_global_queue - 可用于网络电话/核心数据。