一种高效读写锁的实现方法技术

技术编号:15541264 阅读:189 留言:0更新日期:2017-06-05 10:45
本发明专利技术公开了一种高效读写锁的实现方法。本方法为:1)程序的主线程初始化共享数据队列,为该共享数据队列设置一写线程和一读线程,以及设置一整数变量M来保存该共享数据队列最大长度,设置一变量K保存当前该共享数据队列中的数据个数;2)当该程序需要对该共享数据队列进行写操作时,该主线程调用该共享数据队列的写线程,该写线程做写操作前,如果K<M,则把要写的数据插入到该共享数据队列的写端,并且增加K的计数值;3)当该程序需要对该共享数据队列进行读操作时,该主线程调用该共享数据队列的读线程,该读线程做读操作前,如果K>0,则从该共享数据队列的读端读取一个元素,并且减少K的计数值。本发明专利技术大大提高了读写效率。

Method for realizing efficient read-write lock

The invention discloses a method for realizing an efficient read-write lock. The method is as follows: 1) the main thread initialization program shared data queue, the queue is a shared data and a read write thread thread, and a set of integer variables M to save the shared data set the maximum queue length, a variable K to save the number of data sharing in the queue when the current data; 2) the program need to write to the shared data queue, the main thread calls the shared write thread data queue, write the thread to do before a write operation, if K< M, is to write the data into the shared write end of data queue, and increase the values of K; 3) when this program requires the sharing of data queue to read, read the main thread thread calls the shared data queue, the reader thread reads before operation, if K> 0, the data queue to read an element from the end of reading and sharing. And reduce the numerical value of K. The invention greatly improves the reading and writing efficiency.

【技术实现步骤摘要】
一种高效读写锁的实现方法
本专利技术涉及计算机多线程,原子操作,读写锁。具体来说,在多线程环境下,利用原子操作,实现高效的读写锁方法。
技术介绍
在多线程环境下,有这样一种场景(即一种单读、单写的场景),对于一段共享数据队列,只有一个用户做写操作,同时也只有一个用户做读操作的情况下,如何提高线程读写锁效率;常用的方法是利用操作系统提供的线程锁,如图1所示,这种方式功能强大,适应性高,但在此场景效率低,因为线程锁采用的是阻塞的方式,另外,线程锁调用本身也有开销,如果大量的调用加锁/解锁的话,开销也比较大。
技术实现思路
针对现有技术中存在的技术问题,本专利技术的目的是提供一种高效读写锁的实现方法,本专利技术通过一种无需加锁的方法,来实现2个线程(一个读线程和一个写线程)对一个共享数据队列的访问。为了实现上述目的,本专利技术的解决方案是:一种高效读写锁的实现方法,其步骤为:1)程序的主线程初始化共享数据队列,为该共享数据队列设置一写线程和一读线程,以及设置一整数变量M来保存该共享数据队列最大长度,设置一变量K保存当前该共享数据队列中的数据个数;2)当该程序需要对该共享数据队列进行写操作时,该本文档来自技高网...
一种高效读写锁的实现方法

【技术保护点】
一种高效读写锁的实现方法,其步骤为:1)程序的主线程初始化共享数据队列,为该共享数据队列设置一写线程和一读线程,以及设置一整数变量M来保存该共享数据队列最大长度,设置一变量K保存当前该共享数据队列中的数据个数;2)当该程序需要对该共享数据队列进行写操作时,该主线程调用该共享数据队列的写线程,该写线程做写操作前,先检查K,如果K<M,则把要写的数据插入到该共享数据队列的写端,并且增加K的计数值;3)当该程序需要对该共享数据队列进行读操作时,该主线程调用该共享数据队列的读线程,该读线程做读操作前,检查K,如果K>0,则从该共享数据队列的读端读取一个元素,并且减少K的计数值。

【技术特征摘要】
1.一种高效读写锁的实现方法,其步骤为:1)程序的主线程初始化共享数据队列,为该共享数据队列设置一写线程和一读线程,以及设置一整数变量M来保存该共享数据队列最大长度,设置一变量K保存当前该共享数据队列中的数据个数;2)当该程序需要对该共享数据队列进行写操作时,该主线程调用该共享数据队列的写线程,该写线程做写操作前,先检查K,如果K<M,则把要写的数据插入到该共享数据队列的写端,并且增加K的计数值;3)当该程序需要对该共享数据队列进行读操作时,该主线程调用该共享数据队列的读线程,该读线程做读操作前,检查K,如果K>0,则从该共享数据队列的读端读取一个元素,并且减少K的计数值。2.如...

【专利技术属性】
技术研发人员:王永峰尧津来
申请(专利权)人:北京锐安科技有限公司
类型:发明
国别省市:北京,11

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

1