ios多线程操作(九)—— 用NSOperation代替GCD

时间:2021-10-26 18:27:11
     NSOperation是另外一个“并发技术”,它可以使开发者在不用关心线程的情况下进行多线程操作!!!      NSOperation的底层是用GCD进行封装,但并不是说NSOperation功能就没有GCD强大,相反,NSOperation的一些高级功能在GCD上不好做,但同样地GCD上的一些高级功能在NSOperation上也不好做,现在来看一下NSOperation和GCD的对比!      NSOperation          * 核心概念:把"操作(异步)"添加到队列(全局的并发队列)!          * 主队列 为mainQueue          * OC 的框架,更加面向对象          * 是对 GCD 的封装          * iOS 2.0 推出的,苹果在推出 GCD 之后,对 NSOperation 的底层全部重写了!          * 高级功能:               1、最大操作并发数(GCD不好做)               2、在 iOS 7.0 之前,使用 GCD 和 NSOperation 能够开启的线程数都不多,5~6条               3、从 iOS 8.0 开始,NSOperation能够开很多个线程,如果不控制,会造成资源浪费                    4、具备继续,暂停,全部取消功能               5、设置操作之间的依赖关系(GCD中,同步任务是来指定依赖关系!)       GCD           * 将"任务(block)"添加到队列(串行/并发/主队列),并且指定任务执行的函数(同步/异步)           * C 语言的框架,dispatch_xxx 函数           * iOS 4.0 推出的,针对多核处理器的并发技术           * 高级功能:              1、一次性 dispatch_once_t              2、延迟操作 after              3、调度组 (op 可以做,但是做不了太复杂) 相信看完NSOperation和GCD的对比,每个人对多线程操作的都会有自己的看法和选择!