我们在前面的笔记《SDWebImage的基本使用》中学习了该框架的一些基本知识,接下来,再看一下它内部的一些细节。
1、最大并发数
在学习NSOperation的时候,我们知道,线程的最大并发数默认值是-1,也就是不设限。那么,在SDWebImage中,线程的最大并发数是多少呢?
在《多线程技术的综合应用》这篇笔记中,我们下载网络图片的代码,其实主要是分为两大部分:一部分是用来处理缓存的,另一部分是用来开子线程的。再来看SDWebImage框架,它其实也可以分为两部分,即一部分用来处理缓存,另一部分用来处理下载。
在SDWebImage这个框架中,最重要的一个类是SDWebImageManager,它主要分管两大部分内容:SDImageCache(处理缓存文件)和SDWebImageDownloader(处理图片的下载)。而在处理下载图片的类中,真正执行任务的是SDWebImageDownloaderOperation。要查看SDWebImage中线程的最大并发数,就应该去处理下载的类中寻找。
在SDWebImageDownloader这个类中,有一个属性maxConcurrentDownloads,就是用来表示最大下载量(也就是最大并发数)的。我们来看一下它的初始化代码:
从代码上看,它是直接返回_downloadQueue.maxConcurrentOperationCount。那么,这个东西所代表的实际数值又是多少呢?继续在SDWebImageDownloader这个类中查看,你会看到一个- init方法,在这里,我们看到_downloadQueue.maxConcurrentOperationCount的数值是6。也就是说,在SDWebImage