GCD
- 核心概念
- 任务:执行什么操作
- 队列:用来存放任务
- 步骤
- 定制任务:确定要做的事
- 将任务添加到队列中:GCD会自动将队列中的任务取出,放到线程中执行,取出原则遵循
FIFO
- 函数
- 执行任务的函数(两个)
- 同步方式执行任务(只能在当前线程中执行任务,不具备开启新线程的能力)
dispatch_sync(dispatch_queue_t queue, dispatch_block_t block);
//queue:队列
//block:任务
- 异步方式执行任务(可以在新的线程中执行任务,具备开启新线程的能力)
dispatch_async(dispatch_queue_t queue, dispatch_block_t block);
//queue:队列
//block:任务
- 队列的类型
- 并发队列
Concurrent Dispatch Queue
(只有在异步函数dispatch_async
下才有效) - 创建并发队列:默认已经提供了全局的并发队列,不需自己创建
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
//DISPATCH_QUEUE_PRIORITY_DEFAULT 为设置优先级,后面的 0 暂时没有意义
- 串行队列
Serial Dispatch Queue
dispatch_queue_t queue = dispatch_queue_create("com.520it.queue", DISPATCH_QUEUE_SERIAL);
或
dispatch_queue_t queue = dispatch_get_main_queue();//主队列是特殊的串行队列
-
各种队列的执行效果
WX20170607-102014.png
网友评论