基于NSOperation的多线程下载

示例

前言

很多iOS应用都有上面实中的需求,按照规定最大N个数据并发下载,支持中断后,断点续传等。
iOS对于多线程技术有pthread, NSThread, GCD, NSOperation 4种主要实现方式。iOS著名网络框架AFNetworking和SDWebImage图片下载框架都基于NSOperation来下载数据。
这是为嘛呢??? 难道NSOperation比较牛逼么?这肯定是有原因的。哈哈~

针对多线程并发下载问题,常见有2种解决方式:

  • 使用GCD中的信号量机制dispatch_semaphore来控制线程的。
  • 基于NSOperationNSOperationQueue来解决。

先来说说基于GCD信号量的弊端:

  1. 自己控制操作的数量。
  2. 很难设置某些操作之间的先后顺序。
  3. 同时不便于封装,需要自己管理线程周期。

NSOpration的好处:

  1. 可以设置最大并发数,不用自己管理。
  2. 可以设置依赖,管理操作的先后顺序。
  3. 面向对象,便于封装。不用管理线程的生命周期。

好,废话不多说,直接说实现,代码在这个demo中。

你可能感兴趣的:(基于NSOperation的多线程下载)