[发明专利]一种读写锁实现方法有效
申请号: | 201210511370.2 | 申请日: | 2012-12-03 |
公开(公告)号: | CN102999378A | 公开(公告)日: | 2013-03-27 |
发明(设计)人: | 李坤;王永炎;郭超;王宏安 | 申请(专利权)人: | 中国科学院软件研究所 |
主分类号: | G06F9/46 | 分类号: | G06F9/46 |
代理公司: | 北京君尚知识产权代理事务所(普通合伙) 11200 | 代理人: | 余长江 |
地址: | 100190 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 读写 实现 方法 | ||
1.一种读写锁实现方法,其步骤包括:
1)初始化读写锁,根据读写锁组件创建读临界区、写临界区和写通知事件三个对象,所述读临界区和所述写临界区初始化为可进入状态,所述写通知事件初始化为被触发状态;
2)当多个读线程和/或写线程并发访问共享资源,根据所述临界区保护所述共享资源内关键代码,设置读写锁;
2-1)申请读锁接口时,先进入写临界区再进入读临界区,根据读锁个数阻止写或读线程的操作,同时所述写通知事件设为非触发状态;释放读锁接口时,进入读临界区,若读锁个数为0则同时将所述写通知事件设为触发状态;
2-2)申请写锁接口时,先进入写临界区再进入读临界区,根据写锁个数阻止写或读线程的操作,同时所述写通知事件设为非触发状态;释放写锁接口时,进入读临界区,同时所述写通知事件设为触发状态;
3)遍历所述2-1)至2-2)返回读写锁信息完成读写锁设置,实现资源共享。
2.如权利要求1所述的读写锁实现方法,其特征在于,所述读写锁组件中定义:公开成员构造函数CReadWriteLock和析构函数~CReadWriteLock;申请读锁接口函数ReadLock和释放读锁接口函数ReadUnlock;申请写锁WriteLock接口函数和释放写锁接口函数WriteUnlock。
3.如权利要求1或2所述的读写锁实现方法,其特征在于,所述读写锁组件中还定义了四个私有成员:最大读锁个数m_ulMaxReadCount;读临界区m_hReadCriticalSection;写临界区m_hWriteCriticalSection;写通知事件m_hWriteNotifyEvent。
4.如权利要求3所述的读写锁实现方法,其特征在于,所述最大读锁个数m_ulMaxReadCount默认为5。
5.如权利要求1所述的读写锁实现方法,其特征在于,所述步骤2-2)中申请写锁时,设置一单位为毫秒级的超时等待时间,在超过所述等待时间后仍未获得写锁即返回失败。
6.如权利要求1所述的读写锁实现方法,其特征在于,所述步骤2-1)中,根据读锁个数阻止写或读线程的操作方法如下:
2-1-1)进入所述两个临界区后,若发现当前读锁个数已经达到最大数目,则返回失败,否则说明当前线程可继续进行读锁操作;
2-1-2)当所述步骤2-1-1)中当前读锁数目未达到最大数目,可增加当前读锁个数,如果增加后读锁个数为1,则不能允许写线程进行操作。
7.如权利要求1所述的读写锁实现方法,其特征在于,所述步骤2-2)中,根据写锁个数阻止写或读线程的操作的方法如下:
2-2-1)先进入写临界区阻止其它线程申请读锁或写锁,然后在设定的等待时间内等待写通知事件以确保没有其它线程对共享资源进行读写操作;
2-2-2)若在所述设定的等待时间内写通知事件没有被触发,则等待超时,返回失败;若在指定时间内写通知事件被触发,则说明此时已没有读线程,获得独占的写锁,然后将写通知事件设置为非触发状态,只要有读锁或写锁存在,就不允许新的写锁申请,返回成功;
2-2-3)所述步骤2-2-2)如果返回成功,申请写锁线程不会离开写临界区,当返回失败,申请写锁的线程就要马上离开写临界区。
8.如权利要求1所述的读写锁实现方法,其特征在于,
所述释放读锁过程中,只进入读临界区,不进入写临界区,然后将读锁个数减1,当减到0时,将通知事件设为触发状态,退出读临界区;
所述释放写锁过程中,先将写通知事件设为触发状态,再退出写临界区。
9.如权利要求1所述的读写锁实现方法,其特征在于,所述读写锁在Windows 2000、Windows XP以及Windows 2003 Server中没有内置读写锁的操作系统中进行操作。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院软件研究所,未经中国科学院软件研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210511370.2/1.html,转载请声明来源钻瓜专利网。