示例
前言
很多iOS应用都有上面实中的需求,按照规定最大N个数据并发下载,支持中断后,断点续传等。
iOS对于多线程技术有pthread
, NSThread
, GCD
, NSOperation
4种主要实现方式。iOS著名网络框架AFNetworking和SDWebImage图片下载框架都基于NSOperation
来下载数据。
这是为嘛呢??? 难道NSOperation
比较牛逼么?这肯定是有原因的。哈哈~
针对多线程并发下载问题,常见有2种解决方式:
- 使用
GCD
中的信号量机制dispatch_semaphore
来控制线程的。 - 基于
NSOperation
和NSOperationQueue
来解决。
先来说说基于GCD
信号量的弊端:
- 自己控制操作的数量。
- 很难设置某些操作之间的先后顺序。
- 同时不便于封装,需要自己管理线程周期。
NSOpration
的好处:
- 可以设置最大并发数,不用自己管理。
- 可以设置依赖,管理操作的先后顺序。
- 面向对象,便于封装。不用管理线程的生命周期。
好,废话不多说,直接说实现,代码在这个demo中。