一、GCD是什么?
它是Apple 开发的一个多核编程的较新的解决方法。它主要用于优化应用程序以支持多核处理器以及其他对称多处理系统。它是一个在线程池模式的基础上执行的并发任务。
二、GCD的优缺点:
优点:
1、不需要关心线程管理,数据同步,自动管理线程的生命周期;
2、操作简单,效率会更高;
缺点:
1、无法设置依赖关系;
2、无法通过KVO机制进行判断;
3、无法在执行的block设置优先级,只能设置队列的优先级;
4、没有继承那么高的代码复用度。
三、GCD的任务和队列
1、执行任务的方式:同步(sync)和异步(async)
1、同步:等待队列任务结束后再执行,不开启新线程;
2、异步:不用等待可继续执行任务,并开启新线程。
2、队列类型:串行队列和并发队列
1、共同点:都符合FIFO(先进先出)的原则;
2、区别:执行顺序不同及开启线程数量不同;
3、串行队列:每次只有一个任务在执行,完成后再接着执行下一个任务,并只开启一个线程;
4、并发队列:每次可以多个任务同时执行,并开启多个线程;(并发队列的并发功能只有在异步(dispatch_async)函数下才有效);
3、任务和队列的组合
组合图.png四、总结:
GCD基于C语言开发,效率更高,而NSOperation是使用OC进一步对GCD的封装,建议如果任务之间有依赖关系或者想要监听任务完成状态的情况下,优先选择NSOperation否则使用GCD。
网友评论