书城图书下载

1.将图书下载的任务封装成了一个自定义的NSOperation。

2.创建NSOperationOueue,处理图书下载。图书下载器管理两类状态的图书:“下载中”、“等待中”。“下载中”图书加入到OperationOueue中执行,并保存到runningTasks数组中。“等待中”的图书保存在queuedTasks中。

3.通过下载器的属性maximumActiveDownloads控制runningTasks数量,增加新任务时比较当前下载的数量是否小于maximumActiveDownloads的值,如果小于则加入下载队列,反之则加入等待队列。书城下载不支持多本书下载,默认最下下载数为1。

注:NSOperationOueue是可以控制并行下载的数量的,这里之所以不使用NSOperationOueue控制原因是由于无法控制operation的执行顺序。

4.为了保证操作的线程安全,创建了两个OperationQueue。一个窜行队列,一个并行队列。对于runningTasks和queuedTasks的操作都在窜行队列中执行。并行队列执行NSOperation的回调。

参考资料:AFImageDownloader

你可能感兴趣的:(书城图书下载)