[发明专利]一种读写锁的实现方法、装置及电子设备有效
申请号: | 202110280807.5 | 申请日: | 2021-03-16 |
公开(公告)号: | CN113010325B | 公开(公告)日: | 2023-07-25 |
发明(设计)人: | 汪洋 | 申请(专利权)人: | 北京百度网讯科技有限公司 |
主分类号: | G06F9/52 | 分类号: | G06F9/52 |
代理公司: | 北京银龙知识产权代理有限公司 11243 | 代理人: | 许静;黄灿 |
地址: | 100085 北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 读写 实现 方法 装置 电子设备 | ||
本公开提供了一种读写锁的实现方法、装置及电子设备,涉及计算机技术中的互斥锁、网络通信等技术领域。具体方案为:在接收到第一写请求的情况下,将写计数锁上锁,并将写计数增一,其中,写计数的初始化值为零;在写计数为一的情况下,将读锁上锁;在读锁为上锁状态的情况下,将写计数锁解锁;在写计数锁为解锁状态的情况下,将写锁上锁,对第一写请求对应的第一资源进行写操作。由于在接收第一请求后,会在写计数为一的情况下,给读锁上锁,这样后续的读请求不能继续加读锁,若写锁已解锁释放,可为第一写请求加写锁,即将写锁上锁,即可对第一写请求对应的第一资源进行写操作,实现写优先,如此,可提高进行写操作的效率。
技术领域
本申请涉及计算机技术中的互斥锁、网络通信等技术领域,尤其涉及一种读写锁的实现方法、装置及电子设备。
背景技术
在多核计算机普及的今天,多线程能够更加有效的利用多核计算机的资源,更加高效。但多线程也会带来数据安全方面的并发问题。例如,多个线程同时操作一个可共享的资源变量时,可能会导致数据的不一致,产生冲突。锁就是这样一种控制线程对资源访问的机制,并用来保证数据的一致性。
目前,可选择的锁有多种,例如,可包括互斥锁、自旋锁以及读写锁等,其中,对于互斥锁,同一时刻只能有一个线程访问可共享资源,即同一时刻只能一个线程对共享资源进行读操作或写操作。对于自旋锁,功能类似互斥锁,只是互斥锁在阻塞的时候会休眠出让CPU,自旋锁则一直占有CPU,忙等待直到获得锁。读写锁包含一对相关的锁,即包括读锁和写锁,读锁和写锁之间是互斥的,即同一时刻只能读或者写,读锁用于只读操作,写锁用于写操作。读锁可由多个读线程同时运行,即多个读线程可同时对资源进行读操作,写锁是唯一的,同一时刻只能一个线程访问资源进行写操作。
发明内容
本申请提供一种读写锁的实现方法、装置及电子设备。
第一方面,本申请一个实施例提供一种读写锁的实现方法,所述方法包括:
在接收到第一写请求的情况下,将写计数锁上锁,并将写计数增一,其中,所述写计数的初始化值为零;
在所述写计数为一的情况下,将读锁上锁;
在所述读锁为上锁状态的情况下,将所述写计数锁解锁;
在写计数锁为解锁状态的情况下,将写锁上锁,对所述第一写请求对应的第一资源进行写操作。
本实施例的读写锁的实现方式中,在接收第一写请求后,先将写计数锁上锁,并将写计数增一,在写计数为一的情况下,给读锁上锁,后续在将写锁上锁后,即可对所述第一写请求对应的第一资源进行写操作。由于在接收第一请求后,会在写计数为一的情况下,给读锁上锁,这样后续的读请求不能继续加读锁,若写锁已解锁释放,可为第一写请求加写锁,即将写锁上锁,即可对第一写请求对应的第一资源进行写操作,实现写优先,如此,可提高进行写操作的效率。
第二方面,本申请一个实施例提供一种读写锁的实现装置,所述装置包括:
第一上锁计数模块,用于在接收到第一写请求的情况下,将写计数锁上锁,并将写计数增一,其中,所述写计数的初始化值为零;
第一上锁模块,用于在所述写计数为一的情况下,将读锁上锁;
第一解锁模块,用于在所述读锁为上锁状态的情况下,将所述写计数锁解锁;
写模块,用于在写计数锁为解锁状态的情况下,将写锁上锁,对所述第一写请求对应的第一资源进行写操作。
第三方面,本申请一个实施例还提供一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京百度网讯科技有限公司,未经北京百度网讯科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110280807.5/2.html,转载请声明来源钻瓜专利网。