本文主要是介绍SDWebImage 源码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在 SDWebImageDownloader.m
中,可以发现这么一个属性:
@property (strong, nonatomic) NSOperationQueue *downloadQueue;
NSOperation
表示一个独立的控制单元,也就是我们所说的线程。而 NSOperationQueue
控制着这些并行操作的执行,以队列的数据结构特点,从而实现线程优先级的控制。而在 SDWebImage
中,很显然是用来管理 SDWebImageDownloaderOperation
。
线程安全
使用自定义的并行调度队列barrierQueue处理所有下载操作的网络响应序列化任务。
为了保证线程安全,所有增改回调集合URLCallbacks的操作使用dispatch_barrier_sync放入队列barrierQueue中,而查询URLCallbakcs的操作只需使用dispatch_sync放入队列barrierQueue中。
这篇关于SDWebImage 源码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!