[发明专利]Key-Value型单写多读锁池软件模块及其运行方法有效
申请号: | 201210150721.1 | 申请日: | 2012-05-15 |
公开(公告)号: | CN102681892A | 公开(公告)日: | 2012-09-19 |
发明(设计)人: | 肖舸;葛新;李伟伟;杨东;王毅;王文庆 | 申请(专利权)人: | 西安热工研究院有限公司 |
主分类号: | G06F9/46 | 分类号: | G06F9/46 |
代理公司: | 西安智大知识产权代理事务所 61215 | 代理人: | 贾玉健 |
地址: | 710032 *** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | key value 型单写多读锁池 软件 模块 及其 运行 方法 | ||
1.一种Key-Value型单写多读锁池软件模块,其特征在于:包括相互耦合,联动工作的如下子模块:
应用程序调用接口:定义本模块的操作方法,供其他计算机编程语言调用,实现功能输出;
单写多读操作逻辑层:提供单写多读算法逻辑,为实现的每一把逻辑锁提供单写多读操作特性;
Hash管理模块:接受任意数据类型的Key键值,快速索引查找对应的单写多读逻辑锁,实现多个单写多读逻辑锁的精确访问;
动态内存池模块:实现内部单写多读逻辑锁数据的动态申请和释放;
系统物理锁模块:向操作系统申请的锁资源,程序中调用其加解锁方法,提供本模块自身功能的多线程安全保护。
2.根据权利要求1所述锁池软件模块,其特征在于:提供海量单写多读逻辑锁供其他应用程序开发使用,所述单写多读逻辑锁包含两个特征数据,一个写标志位和一个读计数器,可以存储、描述“唯一写”和“多重读”的工作状态值,其核心数据属于内存数据,可以在Hash管理模块中被索引管理,也可以被动态内存池模块动态申请和释放,其逻辑定义如下:
1)写标志置位为1,表示目前该逻辑锁处于“写”状态,禁止其他的“写”或“读”动作进入,即无法再次设置写标志位为1,或者叠加读计数器;
2)读计数器叠加,不为0,表示目前有“读”动作,不允许其他的“写”动作进入,即无法设置写标志位为1,但其他的“读”动作可以并发,这体现在读计数器的值不断增加。
3.权利要求1所述锁池软件模块的运行方法,其特征在于:包括如下步骤:
步骤1:应用程序以任意数据作为Key,调用本软件模块应用程序调用接口,提出锁访问请求,所述请求包括加写锁、解写锁、加读锁、解读锁以及查询读取锁状态,应用程序调用接口接到访问请求,转到单写多读操作逻辑层实现服务;
步骤2:单写多读操作逻辑层服务方式如下:
对于“加写锁”或“加读锁”动作,单写多读操作逻辑层首先根据Key在Hash管理模块中检索是否有对应的单写多读逻辑锁存在,如果不存在,则向动态内存池模块申请一个单写多读逻辑锁,然后推入Hash管理模块进行索引管理,此时该单写多读逻辑锁视为已经存在;如果存在,则直接进行加锁操作,返回操作结果;
对于“解写锁”或“解读锁”动作,单写多读操作逻辑层首先根据Key在Hash管理模块中检索是否有对应的单写多读逻辑锁存在,不存在直接返回,不做任何事,存在则进行解锁操作,解锁完毕后检查其是否还有其他加锁状态,如果无,则从Hash管理模块中删除该单写多读逻辑锁的索引,并向动态内存池模块释放该单写多读逻辑锁资源;
对于读取锁状态动作,单写多读操作逻辑层首先根据Key在Hash管理模块中检索是否有对应的单写多读逻辑锁存在,不存在直接返回锁未使用状态,存在则读取单写多读逻辑锁内真实的数据状态返回;
上述所有动作都在同一把系统物理锁保护下完成,以保证所有动作操作时不被打断,确保本软件模块自身的多线程安全性。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安热工研究院有限公司,未经西安热工研究院有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210150721.1/1.html,转载请声明来源钻瓜专利网。