多线程-GCD(Grand Central Dispatch)的理解(一)

一、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。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容