[发明专利]一种高效读写锁的实现方法在审

专利信息
申请号: 201611095878.3 申请日: 2016-12-02
公开(公告)号: CN106776051A 公开(公告)日: 2017-05-31
发明(设计)人: 王永峰;尧津来 申请(专利权)人: 北京锐安科技有限公司
主分类号: G06F9/52 分类号: G06F9/52;G06F9/54
代理公司: 北京君尚知识产权代理事务所(普通合伙)11200 代理人: 司立彬
地址: 100192 北京市海*** 国省代码: 北京;11
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 高效 读写 实现 方法
【说明书】:

技术领域

发明涉及计算机多线程,原子操作,读写锁。具体来说,在多线程环境下,利用原子操作,实现高效的读写锁方法。

背景技术

在多线程环境下,有这样一种场景(即一种单读、单写的场景),对于一段共享数据队列,只有一个用户做写操作,同时也只有一个用户做读操作的情况下,如何提高线程读写锁效率;常用的方法是利用操作系统提供的线程锁,如图1所示,这种方式功能强大,适应性高,但在此场景效率低,因为线程锁采用的是阻塞的方式,另外,线程锁调用本身也有开销,如果大量的调用加锁/解锁的话,开销也比较大。

发明内容

针对现有技术中存在的技术问题,本发明的目的是提供一种高效读写锁的实现方法,本发明通过一种无需加锁的方法,来实现2个线程(一个读线程和一个写线程)对一个共享数据队列的访问。

为了实现上述目的,本发明的解决方案是:

一种高效读写锁的实现方法,其步骤为:

1)程序的主线程初始化共享数据队列,为该共享数据队列设置一写线程和一读线程,以及设置一整数变量M来保存该共享数据队列最大长度,设置一变量K保存当前该共享数据队列中的数据个数;

2)当该程序需要对该共享数据队列进行写操作时,该主线程调用该共享数据队列的写线程,该写线程做写操作前,先检查K,如果K<M,则把要写的数据插入到该共享数据队列的写端,并且增加K的计数值;

3)当该程序需要对该共享数据队列进行读操作时,该主线程调用该共享数据队列的读线程,该读线程做读操作前,检查K,如果K>0,则从该共享数据队列的读端读取一个元素,并且减少K的计数值。

进一步的,所述步骤2)中,如果K大于或等于M,即该共享数据队列已满,则丢弃当前要写的数据。

进一步的,所述步骤2)中,如果K大于或等于M,即该共享数据队列已满,则等待该共享数据队列未满时,将当前要写的数据插入到该共享数据队列的写端,并且增加K的计数值。

进一步的,所述步骤3)中,如果K=0,即该共享数据队列为空,则采取等待或者轮询的方式检测该共享数据队列中是否存在数据,如果存在,则从该共享数据队列的读端读取一个元素,并且减少K的计数值。

进一步的,该共享数据队列中的元素为写入数据的指针。

本发明的主要内容包括:

a.程序的主线程初始化共享数据队列,用一个整数变量M来保存该共享数据队列最大长度,K保存当前该共享数据队列中的数据个数。

b.当程序需要对该共享数据队列进行写操作时,主线程调用该共享数据队列的写线程,该写线程做写操作前,先检查K,如果K<M,运行push操作,即把要写的数据插入到该共享数据队列的写端,并且K++,如果K>=M,说明该共享数据队列已满,那么可以采取丢弃或者等待的方式。

c.当程序需要对该共享数据队列进行读操作时,主线程调用该共享数据队列的读线程,该读线程做读操作前,检查K,如果K>0,执行pop操作,即从该共享数据队列的读端读取一个元素,K--,如果K=0,说明该共享数据队列为空,那么可以采取等待或者轮询的方式。

与现有技术相比,本发明的优点和积极效果为:

在本发明中,在单读单写的情况下,通过整数加减操作,对共享数据队列中的元素进行访问。相对于采用线程锁,本发明大大提高了读写效率,消除了由于频繁的调用线程锁而产生的开销。

附图说明

图1为传统读写锁的流程图;

图2为本发明方法的流程图。

具体实现方式

本发明流程如图2所示,具体如下:

(1)程序启动后,由该程序的主线程来初始化共享数据队列并创建读线程和写线程,该共享数据队列中的元素为写入数据的指针,共享数据队列最大长度为M,共享数据队列当前元素个数为K,K=0。

(2)当程序需要对该共享数据队列进行写操作时,主线程调用该共享数据队列的写线程,该写线程操作的时候,检查K,如果K<M,写线程执行队列的push操作,即把要写的数据插入到共享数据队列的写端,并执行K++;如果K>=M,返回NULL,表示共享数据队列已经满了,本次写入失败,可以根据自身需要进行等待或者轮询。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京锐安科技有限公司,未经北京锐安科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201611095878.3/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top