1、纯C语言,提供了非常多的强大的函数。
2、GCD的核心:
将任务添加到队列。(任务:执行什么操作。队列:用来存放任务,特点是先进先出)
3、GCD的使用步骤:
-->创建任务(即确定要做的事情)。GCD中的任务是用block封装的。
-->将任务添加到队列中。
>GCD会自动将队列中的任务取出,放到对应的线程中执行。
>任务从队列中取出原则:先进先出。
示例代码:
1 // 1、创建队列 2 // dispatch_queue_t queue = dispatch_get_global_queue(0, 0); 3 4 // 2、创建任务:用Block指定(无参无返回值) 5 // void(^task)() = ^{ 6 // NSLog(@"%@",[NSThread currentThread]); 7 // }; 8 9 // 3、将任务添加到队列 10 // dispatch_async:表示任务是异步的 11 // dispatch_sync:表示任务是同步的 12 // dispatch_async(queue, task); 13 14 // 简写方式: 15 dispatch_async(dispatch_get_global_queue(0,0), ^{ 16 NSLog(@"%@",[NSThread currentThread]); 17 });
GCD执行任务的2个函数:
1 // 同步的方式执行任务,在当前线程中依次执行任务 2 dispatch_sync(dispatch_queue_t queue, dispatch_block_t block); 3 4 // 异步的方式执行任务,会开辟新线程,在新线程中执行任务 5 dispatch_async(dispatch_queue_t queue, dispatch_block_t block);
GCD的2种队列类型:
队列:就是用来存放任务的,特点是先进先出。
1、串行队列:让任务一个接着一个的有序执行,不管队列里面放的是什么任务,都是一个任务执行完毕后,再执行下一个任务。
2、并行队列(又叫并发队列):
2.1>可以让多个任务“并发/同时”执行,自动开启多个线程同时执行多个任务
2.2>同时可以调度多个任务执行
2.3>并发队列的并发功能只有内部的任务是异步任务时,才有效。