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









网友评论