_4_GCD相关-获取 Dispatch Queue

获取"Dispatch Queue"方法有两种.

第一种: dispatch_queue_create获取


在此之前我们已经通过 dispatch_queue_create 生成 "Dispatch Queue".

如下源代码生成"Serial Dispatch Queue".

dispatch_queue_create 此函数的第一个参数指定"Dispatch Queue"的名称. (推荐使用应用程序的 ID 这种逆序全程域名). 这个名称在 Xcode 和 Instruments 的调试器中作为"Dispatch Queue"名称表示. 另外, 这个名称也出现在应用程序崩溃时所生成的 CrashLog 中. (我们命名应该遵循这样的原则: 对我们编程人员来说简单易懂, 对用户来说也要易懂).

第二个参数指定为NULL时, 默认生成"Serial Dispatch Queue", 而要生成"Concurrent Dispatch Queue", 像下面这样, 需指定为"DISPATCH_QUEUE_CONCURRENT".

dispatch_queue_create 的返回值的类型是"dispatch_queue_t". 表示是一个队列.  

第二种: Main Dispatch Queue / Global Dispatch Queue获取


第二种方法是获取系统标准提供的"Dispatch Queue".

实际上不用特意生成"Dispatch Queue" 系统也会给我们提供几个. 那就是 Main Dispatch Queue 和 Global Dispatch Queue.

Main Dispatch Queue


Main Dispatch Queue正如其名称中含有的 "Main" 一样, 这个队列表示是在主线程中执行的 "Dispatch Queue". 因为主线程这个线程只有1个, 所以Main Dispatch Queue自然就是 "Serial Dispatch Queue".

我们追加到 "Main Dispatch Queue" 的任务在主线程的 "RunLoop" 中执行. 由于在主线程执行, 因此要将界面的更新等一些必须在主线程中执行的任务追加到 "Main Dispatch Queue", 这正好与 NSObject 类的 performSelectorOnMainThread 这一方法相同.

Global Dispatch Queue


Global Dispatch Queue 是所有应用程序都能够使用的 "Concurrent Dispatch Queue".

_4_GCD相关-获取 Dispatch Queue_第1张图片

Global Dispatch Queue 的线程执行优先级分别有4个执行优先级.

dispatch_get_global_queue 此函数的第一个参数既是队列执行任务的优先级. 这里写0, 代表默认优先级(Default Priority). 第二个参数是预留参数, 留给未来使用的, 添0, 即可.

以下代码使用了"Global Dispatch Queue" 和 "Main Dispatch Queue".

_4_GCD相关-获取 Dispatch Queue_第2张图片


好了, 我们知道了获取"Dispatch Queue"的这几种方法, 但是还有一个小问题, 那就是 Global Dispatch Queue 获取队列时可以通过指定参数获取对应的线程执行优先级的队列,

而通过 dispatch_queue_create 函数创建的队列如何修改她的线程执行优先级呢?

我们下篇文章来聊.

End.

你可能感兴趣的:(_4_GCD相关-获取 Dispatch Queue)