1.將圖書下載的任務(wù)封裝成了一個自定義的NSOperation。
2.創(chuàng)建NSOperationOueue,處理圖書下載搪泳。圖書下載器管理兩類狀態(tài)的圖書:“下載中”、“等待中”扼脐“毒“下載中”圖書加入到OperationOueue中執(zhí)行,并保存到runningTasks數(shù)組中瓦侮〖柙蓿“等待中”的圖書保存在queuedTasks中。
3.通過下載器的屬性maximumActiveDownloads控制runningTasks數(shù)量肚吏,增加新任務(wù)時比較當(dāng)前下載的數(shù)量是否小于maximumActiveDownloads的值方妖,如果小于則加入下載隊列,反之則加入等待隊列罚攀。書城下載不支持多本書下載党觅,默認最下下載數(shù)為1霎俩。
注:NSOperationOueue是可以控制并行下載的數(shù)量的值漫,這里之所以不使用NSOperationOueue控制原因是由于無法控制operation的執(zhí)行順序举户。
4.為了保證操作的線程安全延刘,創(chuàng)建了兩個OperationQueue嘿期。一個竄行隊列献联,一個并行隊列智末。對于runningTasks和queuedTasks的操作都在竄行隊列中執(zhí)行枫笛。并行隊列執(zhí)行NSOperation的回調(diào)卒废。
參考資料:AFImageDownloader