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的队列类型

并发队列

全局

自己创建的

串行队列

主队列

自己创建的

你可能感兴趣的:(iOS)