您的位置:首页 > 产品设计 > UI/UE

GCD学习笔记(三):Main Dispatch Queue/Global Dispatch Queue

2015-06-10 12:46 423 查看
http://itjoy.org/?p=551

上节笔记中介绍了如何创建queue,通过dispatch_queue_create() 函数得到我们想要的queue,其实不用特意去创建Dispatch Queue,系统为我们实现了几个,一个是Main Dispatch Queue 一个是Global Dispatch Queue。

Main Dispatch Queue 将任务放在主线程中去执行,可以将一些更新UI的任务追加到该Queue中,这个和NSObject类提供的performSelectorOnMainThread方法执行的效果一样。

Global Dispatch Queue 是所有应用程序都能够使用的Concurrent Dispatch Queue。不用刻意的去创建一个Concurrent 的Queue。只要获得系统的这个即可。

追加到Global Dispatch Queue中的线程可以设置优先级,优先级分为四种,高优先级,默认优先级,和低优先级,以及后台优先级,可以根据需求选择执行的优先级。

Objective-C

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

//////////////////

///concurrent
queue

dispatch_queue_t
globalHighQueue
=
dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND,
0);

/*

#define DISPATCH_QUEUE_PRIORITY_HIGH 2

#define DISPATCH_QUEUE_PRIORITY_DEFAULT 0

#define DISPATCH_QUEUE_PRIORITY_LOW (-2)

#define DISPATCH_QUEUE_PRIORITY_BACKGROUND INT16_MIN

*/

dispatch_async(dispatch_get_global_queue(0,
0),
^{

////do
work

dispatch_async(dispatch_get_main_queue(),
^{

////update
ui

});

});

对于使用Main Dispatch Queue 和 Global Dispatch Queue 执行 dispatch_retain 和 dispatch_release 函数不会引起任何变化,也没有任何问题。比起使用dispatch_queue_create()函数创建的queue,使用和释放要省事的多,所以采用系统的提供的就足够用了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: