`

读写锁实现模拟缓存池

阅读更多
class CachedData {
   Object data;
   volatile boolean cacheValid;
   ReentrantReadWriteLock rwl = new ReentrantReadWriteLock();

   void processCachedData() {
     rwl.readLock().lock();
     if (!cacheValid) {
        // Must release read lock before acquiring write lock
        rwl.readLock().unlock();
        rwl.writeLock().lock();
        // Recheck state because another thread might have acquired
        //   write lock and changed state before we did.
        if (!cacheValid) {
          data = ...
          cacheValid = true;
        }
        // Downgrade by acquiring read lock before releasing write lock
        rwl.readLock().lock();
        rwl.writeLock().unlock(); // Unlock write, still hold read
     }

     use(data);
     rwl.readLock().unlock();
   }
 }

 

分享到:
评论

相关推荐

    VC模拟实现管道缓存,可多线程共享数据。

    1. 初始申请一个缓存区,模拟管道操作,从末尾写入,从开头读取。 2. 线程安全,写入,读取块大小无限制。 3. 代码简单,一个类实现。提供详细测试例子。 注意: 测试例子只是为测试双线程读写。 N个线程,需要改写...

    Prime 硬盘缓存和模拟硬盘

    用内存模拟硬盘缓存的软件和用内存模拟SSD的软件,用来利用大内存加速普通机械硬盘的读写速度

    按键精灵过保护读写内存插件.zip

    狂人工作室 //按键精灵用 驱动级过保护读写内存插件 //作者 人狂剑诗 //QQ471643712 //VER 1.0 //用法:把驱动SYS和程序放一个目录 void SdtSave();//开游戏前调用,保存内核环境...从而可以实现加速和驱动级模拟按键

    多线程样例一 读写参数文件

    修改配置后,C++函数取读配置xml时,相机缓存满了而引起崩溃。几率发生。 解决思路: 读文件费时间,所以开一个线程读文件。 抽象后的类似demo: 假定读文件需要0.6秒,图像处理(用存文件代替)需要0.5秒,各执行...

    FPGA手写动态方块视频升级版,支持VGA和AXI4-Stream两种模式,可模拟摄像头输入

    内容摘要:请看csdn博文 csdn博文链接如下: ... 注意!注意!注意! 1、请先认真看csdn博文,觉得有用再买...3、图像三帧缓存,三帧缓存到DDR3,读写地址错开,保证图像输出稳定无撕裂; 4、了解VGA时序和HDMI编码设计;

    2010网络工程师考试模拟试题

    【解析 】 随着 CPU 速度的提高 , CPU 与内存之速度差距越来越大 , 为了提高 CPU 的读写速度 ,提高系统工作速度,在内存和 CPU 之间增加了高速缓存 (cache) 。由于 cache 的内容是部分内存单元的副本,所以增加 ...

    基于Uchome的网页模拟炒股插件,web模拟炒股软件

    特别注意的是,要根据安装向导的提示,正确设置各个目录的读写属性 5、安装完毕后,请务必将 install 目录删除 6、将guyou文件夹复制至template文件夹下,使用管理员登陆后台,在基本设置—站点设置中将站点模板设置...

    SkyEye教程

    CACHE是缓存单元,主要用于缓存内存中的数据,其读写速度远快于内存的读写速度,所以可以提高CPU的内存数据的访问效率。 <br>write/read buffer硬件单元的作用与CACHE的作用类似。MMU、CACHE、write/read buffer...

    iRamDisk 3.6.12 虚拟硬盘,提高读写速度

    iRamDisk是通过软件将一部分内存(RAM)模拟为硬盘来使用的一种技术。相对于直接的硬盘文件访问来说,这种技术可以极大的提高在其上进行的文件访问的速度。 应用介绍 相对于直接的硬盘文件访问来说,iRamDisk虚拟...

    Fourinone分布式计算框架

    如果对一个中小型的互联网或者企业应用,仅仅利用domain/node进行k/v的存储即可,因为domain/node都是内存操作而且读写锁分离,同时拥有复制备份,完全满足缓存的高性能与可靠性。对于大型互联网应用,高峰访问量上...

    Fourinone分布式并行计算四合一框架

    如果对一个中小型的互联网或者企业应用,仅仅利用domain/node进行k/v的存储即可,因为domain/node都是内存操作而且读写锁分离,同时拥有复制备份,完全满足缓存的高性能与可靠性。对于大型互联网应用,高峰访问量上...

    fourinone-3.04.25

    如果对一个中小型的互联网或者企业应用,仅仅利用domain/node进行k/v的存储即可,因为domain/node都是内存操作而且读写锁分离,同时拥有复制备份,完全满足缓存的高性能与可靠性。对于大型互联网应用,高峰访问量上...

    创天无盘网吧系统 v2.3

    “创天无盘网吧系统”实现了通过以太网络传输模拟硬盘读写机制,能将有盘工作站中的硬盘彻底移出电脑,延长至网络里的“创天无盘网吧系统”网络存储管理系统中。对网络工作站的操作系统来说,他的任何操作都与具有...

    FileSystem:类Unix文件系统设计与实现 二级文件系统

    BufferManager:高速缓存管理模块,主要负责管理系统中所有的缓存块,包括申请、释放、读写、清空一块缓存的功能函数接口,以及系统退出时刷新所有缓存块。 FileSystem:系统盘块管理模块,主要负责对镜像文件的存储...

    模拟技术中的异步FIFO的设计与实现

    FIFO是英文First In First Out 的缩写,是一种先进先出的数据缓存器,他与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序写入数据,顺序的读出数据,其数据地址由内部读写指针...

    锐起无盘企业版

    通过更新服务器镜像文件,就可以实现全部客户机的系统更新和维护,彻底解决网络管理费时费力的难题。 § 无盘架构,还原保护 告别病毒木马,完全免疫熊猫烧香、机器狗等网络病毒。 § 智能化PNP技术 确保网吧网络...

    FPGA片上集成缓存在采集系统中的应用

    随着测试环境越来越复杂,需要采集的参数种类越来越多,...本文提出一种基于FPGA(现场可编程门阵列)片上集成的高速FIFO实现采集数据的高速缓存并通过对高速FIFO的读写操作实现总线同步数据传输,提高数据的传输速率。

    深入研究NANDFlash控制器.pdf

    在控制器的主控逻 辑设计中,采取了“块读’’和“块写”方式实现对大页器件的读页和写页操作, 这种方式有效减小了控制器中用做数据缓存的buffer大小,降低了芯片面积。针 对NAND Flash在使用过程中可能出现的位...

    2023最新Java面试题

    为了保证效率,数据都是缓存在内存中,Redis会周期性地把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。 二、Redis都有哪些使用场景? Redis是基于内存的...

    医院门诊预约挂号管理系统 开题报告

    基于Vue和SpringBoot的医院门诊预约挂号管理系统,采用Redis作菜单缓存,MyBatis读写MySQL数据,业务上包含登录注册、科室管理、医生管理、医生放号、预约挂号、我的挂号、用户留言和新闻资讯功能,模拟了患者从零...

Global site tag (gtag.js) - Google Analytics