读写锁的加锁、释放方法及相关系统技术方案

技术编号:21476947 阅读:47 留言:0更新日期:2019-06-29 04:39
本发明专利技术提供了一种读写锁的加锁方法,包括:当访问者要访问共享资源时,判断读写锁的互斥锁字段是否为第一预设标识,所述第一预设标识用于表示所述读写锁中的互斥锁处于空闲状态;若判断出所述互斥锁字段为所述第一预设标识,则将所述互斥锁字段设置为所述访问者的标识,所述访问者的标识为预先分配给所述访问者的唯一标识;判断所述读写锁的当前状态是否满足加读写锁条件;若判断出所述读写锁的当前状态满足加读写锁条件,则将所述访问者标识记录到所述读写锁的写者字段或读者字段中;将所述互斥锁字段设置为所述第一预设标识。通过记录的访问者标识,可知道访问者获取锁的情况,从而在访问者异常终止后,正确释放互斥锁和读写锁,将读写锁恢复。

【技术实现步骤摘要】
读写锁的加锁、释放方法及相关系统
本专利技术涉及数据读写
,特别涉及一种读写锁的加锁和释放方法及相关系统。
技术介绍
在对于同一资源的访问读多写少的应用场景中,采用互斥锁会很大程度的降低程序的效率,所以为了提高并发性能,程序设计时,经常会用到读写锁。读写锁把对共享资源的访问者划分成读者和写者,读者只对共享资源进行读访问,写者则需要对共享资源进行写操作。一般情况下,读写锁能允许同时有多个读者来访问共享资源,且允许单个写者修改共享资源。访问者需要获取读写锁,才能访问共享资源,在访问完成后将读写锁释放。访问者要先获取读写锁内部的互斥锁,才能获取和释放读写锁,在完成获取或是释放读写锁后,将互斥锁释放。所述互斥锁在任意时刻仅能被一个访问者持有。访问者获取互斥锁后,在加读写锁时,将写者标识设置为1或将读者计数器加1,完成加读写锁。相应的,在解读写锁时,将写者字段设置为0或将读者减1,完成解读写锁。当存在访问者发生异常终止时,无法确认异常终止的访问者是否已获取了读写锁中的互斥锁,从而无法确定是否需要释放互斥锁。若在不确定情况下释放互斥锁,可能会将正常运行的访问者的互斥锁释放了。若不释放互斥锁本文档来自技高网...

【技术保护点】
1.一种读写锁的加锁方法,其特征在于,包括:当访问者要访问共享资源时,判断读写锁的互斥锁字段是否为第一预设标识,所述第一预设标识用于表示所述读写锁中的互斥锁处于空闲状态;若判断出所述互斥锁字段为所述第一预设标识,则将所述互斥锁字段设置为所述访问者的标识,所述访问者的标识为预先分配给所述访问者的唯一标识;判断所述读写锁的当前状态是否满足加读写锁条件;若判断出所述读写锁的当前状态满足加读写锁条件,则将所述访问者标识记录到所述读写锁的写者字段或读者字段中;将所述互斥锁字段设置为所述第一预设标识。

【技术特征摘要】
1.一种读写锁的加锁方法,其特征在于,包括:当访问者要访问共享资源时,判断读写锁的互斥锁字段是否为第一预设标识,所述第一预设标识用于表示所述读写锁中的互斥锁处于空闲状态;若判断出所述互斥锁字段为所述第一预设标识,则将所述互斥锁字段设置为所述访问者的标识,所述访问者的标识为预先分配给所述访问者的唯一标识;判断所述读写锁的当前状态是否满足加读写锁条件;若判断出所述读写锁的当前状态满足加读写锁条件,则将所述访问者标识记录到所述读写锁的写者字段或读者字段中;将所述互斥锁字段设置为所述第一预设标识。2.根据权利要求1所述的方法,其特征在于,所述读写锁,包括:所述互斥锁字段、所述写者字段及所述读者字段;其中,所述互斥锁字段用于在所述访问者获取所述互斥锁时,设置为所述访问者的标识;所述写者字段用于在所述访问者获取写锁时,设置为所述访问者的标识;所述读者字段包括读者链表,所述读者链表用于在所述访问者获取读锁时,记录所述访问者的标识。3.根据权利要求2所述的方法,其特征在于,所述判断所述读写锁的当前状态是否满足加读写锁条件,包括:若所述访问者为写者,判断所述读写锁的当前状态是否满足加写锁条件;其中,所述加写锁条件为所述写者字段为第二预设标识且所述读者字段为空,所述第二预设标识用于表示未存在写者获取所述读写锁;其中,所述若判断出所述读写锁的当前状态满足加读写锁条件,则将所述访问者标识记录到所述读写锁的写者字段或读者字段中,包括:若所述访问者为写者,且判断出所述读写锁的当前状态满足加写锁条件,则将所述读写锁中的写者字段设置为所述访问者的标识;或者,所述判断所述读写锁的当前状态是否满足加读写锁条件,包括:若所述访问者为读者,判断所述读写锁的当前状态是否满足加读锁条件,其中,所述加读锁条件为所述写者字段为第二预设标识;其中,所述若判断出所述读写锁的当前状态满足加读写锁条件,则将所述访问者标识记录到所述读写锁的写者字段或读者字段中,包括:若所述访问者为读者,且判断出所述读写锁的当前状态满足加读锁条件,则将所述访问者的标识增加到所述读者字段的读者链表中。4.一种读写锁的释放方法,其特征在于,包括:当访问者访问完共享资源时,判断读写锁中的互斥锁字段是否为第一预设标识,所述第一预设标识用于表示所述读写锁中的互斥锁处于空闲状态;若判断出所述互斥锁字段为第一预设标识,则将所述互斥锁字段设置为所述访问者的标识,所述访问者的标识为预先分配给所述访问者的唯一标识;删除记录在所述读写锁的...

【专利技术属性】
技术研发人员:柳正龙何仲君
申请(专利权)人:恒生电子股份有限公司
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1