1> GCD
是纯
C
语言的
API
,
NSOperationQueue
是基于
GCD
的
OC
版本封装.
2> GCD
仅仅支持
FIFO
队列,只可以设置队列的优先级
,
而
NSOperationQueue
中的每一个任务都可以被重新设置优先级
(setQueuePriority:)
,从而实现不同操作的执行顺序调整.
3> GCD
不支持异步操作之间的依赖关系设置。如果某个操作的依赖另一个操作的数据,使用
NSOperationQueue
能够设置依赖按照正确的顺序执行操作.
(addDependency:)
。
GCD
则没有内建的依赖关系支持
(
只能通过
Barrior
和同步任务手动实现
)
。
4> NSOperationQueue
方便停止队列中的任
(cancelAllOperations, suspended),GCD
不方便停止队列中的任务
.
5> NSOperationQueue
支持
KVO
,可以监测
operation
是否正在执(
isExecuted
)、是否结束(
isFinished
),是否取消(
isCanceld
).
6> GCD
的执行速度比
NSOperationQueue
快
7>NSOperationQueue
可设置最大并发数量
(
节电
),GCD
具有
dispatch_once(
只执行一次
,
单例
)
和
dispatch_after(
延迟执行
)
功能