一种读写锁的实现方法及装置制造方法及图纸

技术编号:19023182 阅读:29 留言:0更新日期:2018-09-26 19:00
本发明专利技术公开了一种读写锁的实现方法及装置。该方法包括:接收用户发送的第一请求消息,若第一请求消息用于请求对数据进行读操作,则可获取预设读写锁的状态,并确定预设读写锁的状态为第一状态后,根据第一请求消息对数据进行读操作。其中,第一状态表示当前不存在线程对数据进行写操作,由此,本发明专利技术实施例可直接根据预设读写锁的状态确定当前不存在线程对数据进行写操作之后,在读操作十分频繁,写操作相对较少的系统中,能够极大地降低线程加读锁的开销,从而能够避免每个读操作都需要对系统总线进行加锁或解锁易导致多个读操作之间产生拥堵的情况,降低多个读操作之间加锁、解锁的碰撞几率,进而提高系统的执行效率。

【技术实现步骤摘要】
一种读写锁的实现方法及装置
本专利技术涉及通信
,尤其涉及一种读写锁的实现方法及装置。
技术介绍
读写锁是一种自旋锁,它把共享资源的访问用户划分成读用户和写用户,读用户只对共享资源进行读操作,写用户则对共享资源进行写操作。一个读写锁同时只能有一个写用户或多个读用户,但不能同时既有读用户又有写用户。在多处理器系统中,允许同时有多个读用户来访问共享资源,在读操作加锁时,写操作被阻塞。当处于写加锁时,所有试图读写资源的操作将被阻塞。目前,进行读操作或写操作是通过线程实现的,在引入线程的操作系统中,可以将线程作为独立运行和独立调度的基本单位。多个线程可以并发执行,为了避免同一数据在被修改时,其他线程也对该数据进行修改;或者,因为数据正在被修改而导致数据不能读,通常在线程对数据进行读操作或写操作的过程中,对系统总线进行加锁,在执行完读写操作后,再对系统总线进行解锁,然而这种方法在高并发的多处理器系统中,尤其是读操作十分频繁,写操作相对较少的系统中,每个读操作都需要对系统总线进行加锁或解锁,容易导致多个读操作之间产生拥堵的情况,进而降低多处理器系统的执行效率。基于此,目前亟需一种读写锁的实现方法,用于解决现有技术中每个读操作都需要对系统总线进行加锁或解锁易导致多个读操作之间产生拥堵的问题。
技术实现思路
本专利技术实施例提供一种读写锁的实现方法及装置,以解决现有技术中每个读操作都需要对系统总线进行加锁或解锁易导致多个读操作之间产生拥堵的技术问题。本专利技术实施例提供一种读写锁的实现方法,包括:接收用户发送的第一请求消息;若所述第一请求消息用于请求对数据进行读操作,则获取预设读写锁的状态,并在确定所述预设读写锁的状态为第一状态后,根据所述第一请求消息对所述数据进行读操作;所述第一状态表示不存在对所述数据进行写操作的线程。可选地,若所述第一请求消息用于请求对所述数据进行写操作,则所述方法还包括:将所述预设读写锁的状态设置为第二状态;所述第二状态表示当前存在对所述数据进行写操作的线程;设置系统总线处于加写锁状态,并根据所述第一请求消息对所述数据进行写操作。可选地,在对所述数据完成写操作之后,所述方法还包括:将所述预设读写锁的状态设置为第一状态。可选地,将所述预设读写锁的状态设置为第一状态,包括:若确定不存在第二请求消息,则将所述预设读写锁的状态设置为第一状态;或者,若确定存在所述第二请求消息,且所述第二请求消息用于请求对数据进行读操作,则唤醒所述第二请求消息,并将所述预设读写锁的状态设置为第一状态;其中,所述第二请求消息为在执行所述第一请求消息的过程中接收到的请求消息。可选地,所述方法还包括:若确定所述预设读写锁的状态为第二状态,且确定系统总线未处于加写锁状态,则设置所述系统总线处于加读锁状态,并根据所述第一请求消息对所述数据进行读操作;所述第二状态表示存在对数据进行写操作的线程。本专利技术实施例提供一种读写锁的实现装置,包括:接收单元,用于接收用户发送的第一请求消息;处理单元,用于若所述第一请求消息用于请求对数据进行读操作,则获取预设读写锁的状态,并在确定所述预设读写锁的状态为第一状态后,根据所述第一请求消息对所述数据进行读操作;所述第一状态表示不存在对所述数据进行写操作的线程。可选地,所述处理单元还用于:若所述第一请求消息用于请求对所述数据进行写操作,则将所述预设读写锁的状态设置为第二状态;所述第二状态表示当前存在对所述数据进行写操作的线程;以及设置系统总线处于加写锁状态,并根据所述第一请求消息对所述数据进行写操作。可选地,所述处理单元在对所述数据完成写操作之后,还用于:将所述预设读写锁的状态设置为第一状态。可选地,所述处理单元具体用于:若确定不存在第二请求消息,则将所述预设读写锁的状态设置为第一状态;或者,若确定存在所述第二请求消息,且所述第二请求消息用于请求对数据进行读操作,则唤醒所述第二请求消息,并将所述预设读写锁的状态设置为第一状态;其中,所述第二请求消息为在执行所述第一请求消息的过程中接收到的请求消息。可选地,所述处理单元还用于:若确定所述预设读写锁的状态为第二状态,且确定系统总线未处于加写锁状态,则设置所述系统总线处于加读锁状态,并根据所述第一请求消息对所述数据进行读操作;所述第二状态表示存在对数据进行写操作的线程。本专利技术实施例中,接收用户发送的第一请求消息,若第一请求消息用于请求对数据进行读操作,则可获取预设读写锁的状态,并确定预设读写锁的状态为第一状态后,根据第一请求消息对数据进行读操作。其中,第一状态表示当前不存在线程对数据进行写操作,由此,本专利技术实施例可直接根据读写锁的状态确定当前不存在线程对数据进行写操作之后,可直接根据第一请求消息对数据进行读操作,相比于现有读写锁实现方式中需要对系统总线进行加读锁后才能进行读操作而言,本专利技术实施例中读操作无需对系统总线进行加读锁,从而能够缩短读操作的处理时间;进一步地,在高并发的多处理器系统中,尤其是读操作十分频繁,写操作相对较少的系统中,采用本专利技术实施例提供的方法,能够极大地降低线程加读锁的开销,从而能够避免每个读操作都需要对系统总线进行加锁或解锁易导致多个读操作之间产生拥堵的情况,降低多个读操作之间加锁、解锁的碰撞几率,进而提高系统的执行效率。附图说明为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为现有技术提供的读写锁的实现方法的流程示意图;图2为本专利技术实施例提供的一种读写锁的实现方法对应的流程示意图;图3为本专利技术实施例提供的另一种读写锁的实现方法对应的流程示意图;图4为本专利技术实施例中所涉及到的整体性流程的示意图;图5为本专利技术实施例提供的一种读写锁的实现装置的结构示意图。具体实施方式为了使本专利技术的目的、技术方案和优点更加清楚,下面将结合附图对本专利技术作进一步地详细描述,显然,所描述的实施例仅仅是本专利技术一部份实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本专利技术保护的范围。在引入线程的操作系统中,多个线程并发执行时,往往需要访问同一数据。为了保证该数据的完整性,目前使用锁机制。例如,线程对一个数据进行读操作之前,先对该数据加读锁,读操作执行完毕后,再解读锁。同样地,线程对一个数据进行写操作之前,先对该数据加写锁,读操作执行完毕后,再解写锁。进一步地,线程对数据实现加锁或解锁,也就是对系统总线进行加锁或解锁。为了便于理解,图1示例性示出了现有技术提供的读写锁的实现方法的流程示意图,如图1所示,以一个线程为例,该线程对数据进行写操作之前,首先对系统总线进行加写锁,以使得其他线程都不能使用总线,此时获取并解析系统总线的状态,以判断是否存在线程对数据进行读操作或者写操作。在允许对数据进行读操作时,也需要先对系统总线进行加读锁(计算新的读标识)。可见,现有技术的实施过程中,由于每个读操作都需要对系统总线进行加读锁,在高并发的多处理器系统中,尤其是读操作十分频繁,写操作相对较少的系统中,比如路由表、地址本文档来自技高网...

【技术保护点】
1.一种读写锁的实现方法,其特征在于,包括:接收用户发送的第一请求消息;若所述第一请求消息用于请求对数据进行读操作,则获取预设读写锁的状态,并在确定所述预设读写锁的状态为第一状态后,根据所述第一请求消息对所述数据进行读操作;所述第一状态表示不存在对所述数据进行写操作的线程。

【技术特征摘要】
1.一种读写锁的实现方法,其特征在于,包括:接收用户发送的第一请求消息;若所述第一请求消息用于请求对数据进行读操作,则获取预设读写锁的状态,并在确定所述预设读写锁的状态为第一状态后,根据所述第一请求消息对所述数据进行读操作;所述第一状态表示不存在对所述数据进行写操作的线程。2.根据权利要求1所述的方法,其特征在于,若所述第一请求消息用于请求对所述数据进行写操作,则所述方法还包括:将所述预设读写锁的状态设置为第二状态;所述第二状态表示当前存在对所述数据进行写操作的线程;设置系统总线处于加写锁状态,并根据所述第一请求消息对所述数据进行写操作。3.根据权利要求2所述的方法,其特征在于,在对所述数据完成写操作之后,所述方法还包括:将所述预设读写锁的状态设置为第一状态。4.根据权利要求3所述的方法,其特征在于,将所述预设读写锁的状态设置为第一状态,包括:若确定不存在第二请求消息,则将所述预设读写锁的状态设置为第一状态;或者,若确定存在所述第二请求消息,且所述第二请求消息用于请求对数据进行读操作,则唤醒所述第二请求消息,并将所述预设读写锁的状态设置为第一状态;其中,所述第二请求消息为在执行所述第一请求消息的过程中接收到的请求消息。5.根据权利要求1所述的方法,其特征在于,所述方法还包括:若确定所述预设读写锁的状态为第二状态,且确定系统总线未处于加写锁状态,则设置所述系统总线处于加读锁状态,并根据所述第一请求消息对所述数据进行读操作;所述第二状态表示存在对数据进行写操作的线程。6.一种读写...

【专利技术属性】
技术研发人员:谢正明赵刚董映
申请(专利权)人:北京神州绿盟信息安全科技股份有限公司北京神州绿盟科技有限公司
类型:发明
国别省市:北京,11

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

1