美文网首页
YYCache 源码学习总结

YYCache 源码学习总结

作者: 科仔 | 来源:发表于2020-08-04 14:00 被阅读0次

    YYCache 内存分为内存缓存和磁盘缓存

    内存缓存

    1.内存缓存实现通过CFMutableDictionaryRef字典实现数据的存储查找
    2._YYLinkedMap是一个双向链表,用于实现LRU算法,当内存不足的时候最近最少用到的数据将被清除。
    3.YYMemoryCache是线程安全的,通过pthread_mutex_lock实现的。pthread_mutex_lock互斥锁经过苹果的优化目前是效率最高的锁了。pthread_mutex_trylock 和pthread_mutex_lock不同点在于pthread_mutex_trylock没成功会继续做别的事,而pthread_mutex_lock没成功线程会被挂起。
    4.内存清除,会单独放到一个线程里面

    image.png

    磁盘缓存

    1.磁盘缓存是通过sqlite实现的,根据数据的大小。大于20k的数据将会保存到文件,数据库中只保存文件名,小于20k的数据直接存储到数据库。
    2.磁盘缓存是通过dispatch_semaphore_t实现读写分离的,读数据并发不会有数据安全问题的,可以用dispatch_barrier_async实现写入的时候前面的读操作已经完成。

    相关文章

      网友评论

          本文标题:YYCache 源码学习总结

          本文链接:https://www.haomeiwen.com/subject/uyuvrktx.html