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的队列类型
并发队列
全局
自己创建的
串行队列
主队列
自己创建的
网友评论