IOS多线程之NSoperation和GCD的比较

GCD是基于c的底层api,NSOperation属于object-c类。iOS首先引入的是NSOperation,IOS4之后引入了GCD和NSOperationQueue并且其内部是用gcd实现的。

相对于GCD:

1,NSOperation拥有更多的函数可用,具体查看api。

2,在NSOperationQueue中,可以建立各个NSOperation之间的依赖关系。

3,有kvo,可以监测operation是否正在执行(isExecuted)、是否结束(isFinished),是否取消(isCanceld)。

4,NSOperationQueue可以方便的管理并发、NSOperation之间的优先级。

GCD主要与block结合使用。代码简洁高效。

GCD也可以实现复杂的多线程应用,主要是建立个个线程时间的依赖关系这类的情况,但是需要自己实现相比NSOperation要复杂。


NSOperationQueue

NSOperationQueue的队列类型

主队列

[NSOperationQueue mainQueue]

凡是添加到主队列中的任务(NSOperation),都会放到主线程中执行

非主队列(其他队列)

[[NSOperationQueue alloc] init]

同时包含了:串行、并发功能

添加到这种队列中的任务(NSOperation),就会自动放到子线程中执行


GCD

1 - 主要与block结合使用。代码简洁高效。

2 - GCD也可以实现复杂的多线程应用,主要是建立个个线程时间的依赖关系这类的情况,但是需要自己实现相比NSOperation要复杂。具体使用哪个,依需求而定。

GCD的队列类型

并发队列

全局

自己创建的

串行队列

主队列

自己创建的

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

推荐阅读更多精彩内容

友情链接更多精彩内容