今天来说说项目里常用的GCD应用:
上代码
![](https://img.haomeiwen.com/i14991669/874f9283a0c39259.png)
看到上面代码是不是很熟悉,分解如下:
1、该方法的第一个参数是dispatch_queue,第二个参数是要执行的block。
dispatch_async(dispatch_queue_t _Nonnull queue, ^{
})
2、这个函数的第一个参数是dispatch_get_global_queue的优先级;第二个参数为保留值,始终传0.这个队列又叫做全局并行队列。
dispatch_get_global_queue(longidentifier, unsignedlong flags);GCD特殊的队列
3、dispatch_get_main_queue GCD特殊队列
Dispatch Queues的生成可以有这几种方式:
1. dispatch_queue_tqueue = dispatch_queue_create(“串行队列", DISPATCH_QUEUE_SERIAL); //生成一个串行队列,
2. dispatch_queue_t queue = dispatch_queue_create("并发队列", DISPATCH_QUEUE_CONCURRENT); //生成一个并发执行队列,
3. dispatch_queue_t queue = dispatch_get_main_queue(); //获得主线程的dispatch队列,实际是一个串行队列
4. dispatch_queue_t queue=dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0)//全局队列是并发队列,并由整个进程共享。进程中存在三个全局队列:高、中(默认)、低三个优先级队列。可以调用dispatch_get_global_queue函数传入优先级来访问队列
所以说再怎么变化 都是这4种创建方式的组合
注意:GCD队列就2种
1、Serial Dispatch Queue 等待现在执行中处理结束 等待执行 (串行)
2、Concurent Dispatch Queue 不等待现在执行中处理结束 立即执行 (并行)
网友评论