dispatch_queue
GCD队列的获取通常有以下几种方式:
主队列:dispatch_get_main_queue实际上是一个宏,它返回的是结构体_dispatch_main_q的地址;
管理队列:_dispatch_mgr_q是管理队列,不对外公开,只在GCD内部使用;
全局队列:dispatch_get_global_queue获取GCD内部定义的6个不同的全局队列,dq_width均为UINT32_MAX,全局队列底层是线程池;
自定义队列:dispatch_queue_create设置dq_width为1的默认串行队列;
dispatch_async 异步
用链表实现队列将所有的block放在队列中,需要时依次从队列中取出执行!
dispatch_sync 同步
将任务压入队列中,若队列为空,则唤醒队列来执行任务;若队列不为空,则压入队列等待执行,这期间通过信号量来控制等待!