1. Dispatch Queue
开发者要做的只是定义想执行的任务并追加到适当的 Dispatch Queue 中。
dispatch_async { queue, ^{
//想执行的任务
});
通过 dispatch_async 函数“追加”赋值在变量 queue 的“Dispatch Queue中”。
Dispatch Queue 的种类
有两种Dispatch Queue,一种是等待现在执行中处理的 Serial Dispatch Queue,另一种是不等待现在执行中处理的 Concurrent Dispatch Queue。
2. dispatch_queue_create 创建队列
3. Main Dispatch Queue/Global Dispatch Queue 系统提供的两个队列
4. dispatch_set_target_queue 变更执行的优先级
5. dispatch_after 延时执行
需要注意的是dispatch_after函数并不是在指定时间后执行处理,而只是在指定时间追加处理到 Dispatch Queue。
6. Dispatch Group
dispatch_group_notify
dispatch_group_wait
7. dispatch_barrier_async
8. dispatch_sync 把任务Block同步追加到指定的Dispatch Queue中。
9. dispatch_apply
10. dispatch_suspend / dispatch_resume 挂起、恢复指定的Dispatch Queue。
11. Dispatch Semaphore
12. dispatch_once
13. Dispatch I/O
通过 Dispatch I/O 读写文件时,使用Global Dispatch Queue 将1个文件按某大小 read/write。
dispatch_io_create
函数生成 Dispatch I/O,并制定发生错误时用来执行处理的 Block,以及执行该 Block 的Dispatch Queue。dispatch_io_set_low_water
函数设定一次读取的大小(分割大小),dispatch_io_read
函数使用Global Dispatch Queue开始并列读取。每当各个分割的文件块读取结束时,将含有文件块数据的 Dispatch Data 传递给 dispatch_io_read 函数制定的读取结束时回调用的 Block。回调用的 Block 分析传递过来的 Dispatch Data 并进行结合处理。
如果想提高文件读取速度,可以尝试使用 Dispatch I/O。
网友评论