YYCache源码阅读



模块

YYCache

这个类是底层YYMemoryCache和YYDiskCache的对外的统一接口。里面的方法不具体执行,只是调用了YYMemoryCache和YYDiskCache的方法。



YYMemoryCache

这是一个内存缓存类,里面实现双向链表和淘汰算法。为了防止多线程操作,使用了OSSpinLock自旋锁,

OSSpinLock 不需要进入内核,只是简单的重复检测锁是否释放。如果此任务需要执行很久的话,效率会非常低。但是由于它节省了系统调用和上下文切换的时间,所以当任务确实很快的时候,效率很好。对于内存缓存的存取来说,它非常合适。



YYDiskCache

它是以YYKVStorageItem类的前端,它和YYCache一样,都是不执行具体代码,只是调用YYKVStorageItem的方法来具体执行,它使用了



dispatch_semaphore 是信号量,但当信号总量设为 1 时也可以当作锁来。在没有等待情况出现时,它的性能比 pthread_mutex 还要高,但一旦有等待情况出现时,性能就会下降许多。相对于 OSSpinLock 来说,它的优势在于等待时不会消耗 CPU 资源。对磁盘缓存来说,它比较合适。



YYKVStorageItem

它是以YYDiskCache类的后端,负责执行存文件或者存在数据库(小于20K的数据)里面。它也是使用了OSSpinLock。


你可能感兴趣的:(YYCache源码阅读)