IOS Grand Central Dispatch(GCD)教程 - niancan/doc GitHub Wiki
GCD属于系统级的线程管理,在Dispatch queue中执行需要执行的任务性能非常的高。
GCD已经开源,地址http://libdispatch.macosforge.org。
GCD中的FIFO队列称为dispatch queue,用来保证先进来的任务先得到执行。
- 系统标准两个队列
//全局队列,一个并行的队列
DispatchQueue.global()
//主队列,主线程中的唯一队列,一个串行队列
DispatchQueue.main
- 自定义队列
//并行队列
DispatchQueue(label: "QueueName", attributes: .concurrent)
//串行队列
DispatchQueue(label: "QueueName")
- 延迟执行
DispatchQueue.global().asyncAfter(deadline: .now() + 3) {
//task
}
dispatch_group是GCD(Grand Central Dispatch)中的一组方法,他有一个组的概念,
可以把相关的任务归并到一个组内来执行,通过监听组内所有任务的执行情况来做相应处理。
dispatch_group的使用主要方法
-
dispatch_group_create
创建任务组,创建任务组后才能把任务加入进组内。
-
dispatch_group_async
通过异步执行任务。
void dispatch_group_async(dispatch_group_t group, dispatch_queue_t queue, dispatch_block_t block);
-
dispatch_group_enter
用于添加对应任务组中的未执行完毕的任务数,执行一次,未执行完毕的任务数加1,当未执行完毕任务数为0的时候. 才会使dispatch_group_wait解除阻塞和dispatch_group_notify的block执行。
void dispatch_group_enter(dispatch_group_t group);
-
dispatch_group_leave
-
dispatch_group_notify
-
dispatch_group_wait