GCD的核心就是dispatch队列,dispatch_block的执行最终都会放进某个队列中进行,它类似NSOperationQueue,但更复杂也,也更有效,结合block实现的GCD会把函数的闭包特性发挥出来
一、队列的生成方式
1、dispatch_queue_t queue = dispatch_queue_create(“lining1.queue”,DISPATCH_QUEUE_SERIAL);生成一个串行队列,队列中的block按照先进先出(FIFO)的顺序执行,在同一个线程中执行,第一个参数是队列的名称,尽量不要重名
2、dispatch_queue_t queue = dispatch_queue_create(“lining2.queue”,DISPATCH_QUEUE_CONCURRENT);生成一个并发的执行队列,block分配到多个线程中执行
3、dispatch_queue_t queue = dispatch_get_global_queue_create(DISPATHC_QUEUE_PRIORITY_DEFAULT,0); 获得程序进程缺省产生的并发队列,可设定优先级来选择三个队列
三个队列不代表三个线程,可能会有更多的线程,并发队列根据实际情况来自动产生合理的线程数,这也就是线程池,也叫线程组
4、dispatch_queue_t queue = dispatch_get_main_queue();
这是获得一个主线程,实际上是一个串行队列,同样无法控制主线程队列的中断或者继续
dispatch_async(queue,^{
block的具体实现
}); 异步执行,函数立即返回
dispatch_sync(queue,^{
bl