[发明专利]读写锁的加锁、释放方法及相关系统有效
申请号: | 201910218297.1 | 申请日: | 2019-03-21 |
公开(公告)号: | CN109947575B | 公开(公告)日: | 2021-08-24 |
发明(设计)人: | 柳正龙;何仲君 | 申请(专利权)人: | 恒生电子股份有限公司 |
主分类号: | G06F9/52 | 分类号: | G06F9/52 |
代理公司: | 北京集佳知识产权代理有限公司 11227 | 代理人: | 李慧引;王宝筠 |
地址: | 310053 浙江省杭州市*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 读写 加锁 释放 方法 相关 系统 | ||
本发明提供了一种读写锁的加锁方法,包括:当访问者要访问共享资源时,判断读写锁的互斥锁字段是否为第一预设标识,所述第一预设标识用于表示所述读写锁中的互斥锁处于空闲状态;若判断出所述互斥锁字段为所述第一预设标识,则将所述互斥锁字段设置为所述访问者的标识,所述访问者的标识为预先分配给所述访问者的唯一标识;判断所述读写锁的当前状态是否满足加读写锁条件;若判断出所述读写锁的当前状态满足加读写锁条件,则将所述访问者标识记录到所述读写锁的写者字段或读者字段中;将所述互斥锁字段设置为所述第一预设标识。通过记录的访问者标识,可知道访问者获取锁的情况,从而在访问者异常终止后,正确释放互斥锁和读写锁,将读写锁恢复。
技术领域
本发明涉及数据读写技术领域,特别涉及一种读写锁的加锁、释放方法及相关系统。
背景技术
在对于同一资源的访问读多写少的应用场景中,采用互斥锁会很大程度的降低程序的效率,所以为了提高并发性能,程序设计时,经常会用到读写锁。
读写锁把对共享资源的访问者划分成读者和写者,读者只对共享资源进行读访问,写者则需要对共享资源进行写操作。一般情况下,读写锁能允许同时有多个读者来访问共享资源,且允许单个写者修改共享资源。访问者需要获取读写锁,才能访问共享资源,在访问完成后将读写锁释放。
访问者要先获取读写锁内部的互斥锁,才能获取和释放读写锁,在完成获取或是释放读写锁后,将互斥锁释放。所述互斥锁在任意时刻仅能被一个访问者持有。访问者获取互斥锁后,在加读写锁时,将写者标识设置为1或将读者计数器加1,完成加读写锁。相应的,在解读写锁时,将写者字段设置为0或将读者减1,完成解读写锁。
当存在访问者发生异常终止时,无法确认异常终止的访问者是否已获取了读写锁中的互斥锁,从而无法确定是否需要释放互斥锁。若在不确定情况下释放互斥锁,可能会将正常运行的访问者的互斥锁释放了。若不释放互斥锁,则所述异常终止的访问者可能已经获得了互斥锁。此时,其他访问者将无法获取互斥锁从而获取读写锁。
并且,根据写者标识和读者计数器,也无法确定异常终止的访问者是否已经获取了读写锁,同样也无法确定是否要释放读写锁。也无法正确的释放异常终止的访问者获取的读写锁。使得读写锁无法被恢复,出现死锁。所以,在访问者发生异常终止后,能够明确知道互斥锁与读写锁的被获取情况,从而能恢复读写锁,显得尤为重要。
发明内容
基于上述现有技术的不足,本发明提出一种读写锁的加锁、释放方法及相关系统,以解决访问者发生异常终止时,无法正确恢复读写锁的问题。
为解决上述问题,现提出的方案如下:
本发明的第一方面提供了一种读写锁的加锁方法,包括:
当访问者要访问共享资源时,判断读写锁的互斥锁字段是否为第一预设标识,所述第一预设标识用于表示所述读写锁中的互斥锁处于空闲状态;
若判断出所述互斥锁字段为所述第一预设标识,则将所述互斥锁字段设置为所述访问者的标识,所述访问者的标识为预先分配给所述访问者的唯一标识;
判断所述读写锁的当前状态是否满足加读写锁条件;
若判断出所述读写锁的当前状态满足加读写锁条件,则将所述访问者标识记录到所述读写锁的写者字段或读者字段中;
将所述互斥锁字段设置为所述第一预设标识。
可选地,所述读写锁,包括:所述互斥锁字段、所述写者字段及所述读者字段;
其中,所述互斥锁字段用于在所述访问者获取所述互斥锁时,设置为所述访问者的标识;所述写者字段用于在所述访问者获取写锁时,设置为所述访问者的标识;所述读者字段包括读者链表,所述读者链表用于在所述访问者获取读锁时,记录所述访问者的标识。
可选地,所述判断所述读写锁的当前状态是否满足加读写锁条件,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于恒生电子股份有限公司,未经恒生电子股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910218297.1/2.html,转载请声明来源钻瓜专利网。