[发明专利]多线程访问方法及装置有效
申请号: | 201810327912.8 | 申请日: | 2018-04-12 |
公开(公告)号: | CN108762942B | 公开(公告)日: | 2020-10-16 |
发明(设计)人: | 杨亮;陈少杰;张文明 | 申请(专利权)人: | 武汉斗鱼网络科技有限公司 |
主分类号: | G06F9/52 | 分类号: | G06F9/52 |
代理公司: | 北京众达德权知识产权代理有限公司 11570 | 代理人: | 刘杰 |
地址: | 430000 湖北省武汉市东湖开*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 多线程 访问 方法 装置 | ||
1.一种多线程访问方法,其特征在于,所述方法包括:
响应于线程对函数对象的访问,调用全局锁的全局临界区对象对全局键值对表进行加锁,所述全局锁配置在预先创建的全局变量中,所述全局键值对表包括锁对象以及与其对应的键值之间的对应关系;
获取线程调用所述全局锁加锁时的键值;
根据所述加锁时的键值查找所述全局键值对表,以获取与该键值对应的锁对象;
调用所述全局锁的全局临界区对象对所述全局键值对表进行解锁;
调用获取到的锁对象为所述线程访问的函数对象进行加锁。
2.根据权利要求1所述的方法,其特征在于,若没有从所述全局键值对表中查找到与加锁时的键值对应的锁对象,则创建新的锁对象;以及
将创建的新的锁对象、该锁对象与指定的键值之间的对应关系添加到所述全局键值对表。
3.根据权利要求1或2所述的方法,其特征在于,当所述线程完成对所述函数对象的访问后,所述方法还包括:
调用全局锁的全局临界区对象对所述全局键值对表进行加锁;
获取线程调用所述全局锁解锁时的键值;
根据所述解锁时的键值查找所述全局键值对表,以获取与该键值对应的锁对象;
调用获取到的锁对象对所述线程访问的函数对象进行解锁;
调用所述全局锁的全局临界区对象对所述全局键值对表进行解锁。
4.根据权利要求1或2所述的方法,其特征在于,所述全局键值对表为哈希表、线性表、或树状表中的任意一个。
5.一种多线程访问装置,其特征在于,所述装置包括:
第一加锁模块,用于响应于线程对函数对象的访问,调用全局锁的全局临界区对象对全局键值对表进行加锁,所述全局锁配置在预先创建的全局变量中,所述全局键值对表包括锁对象以及与其对应的键值之间的对应关系;
获取模块,用于获取线程调用所述全局锁加锁时的键值;
查找模块,用于根据所述加锁时的键值查找所述全局键值对表,以获取与该键值对应的锁对象;
第一解锁模块,用于调用所述全局锁的全局临界区对象对所述全局键值对表进行解锁;
第二加锁模块,用于调用获取到的锁对象为所述线程访问的函数对象进行加锁。
6.根据权利要求5所述的装置,其特征在于,所述装置还包括:
添加模块,用于当没有从所述全局键值对表中查找到与加锁时的键值对应的锁对象时,创建新的锁对象,以及将创建的新的锁对象、该锁对象与指定的键值之间的对应关系添加到所述全局键值对表。
7.根据权利要求5或6所述的装置,其特征在于,所述第一加锁模块,还用于当所述线程完成对所述函数对象的访问后,调用全局锁的全局临界区对象对所述全局键值对表进行加锁;
所述获取模块,还用于获取线程调用所述全局锁解锁时的键值;
所述查找模块,还用于根据所述解锁时的键值查找所述全局键值对表,以获取与该键值对应的锁对象;
所述装置还包括:
第二解锁模块,用于调用获取到的锁对象对所述线程访问的函数对象进行解锁;
所述第一解锁模块,还用于调用所述全局锁的全局临界区对象对所述全局键值对表进行解锁。
8.根据权利要求5或6所述的装置,其特征在于,所述全局键值对表为哈希表、线性表、或树状表中的任意一个。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-4任一项所述方法的步骤。
10.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-4任一项所述方法的步骤。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉斗鱼网络科技有限公司,未经武汉斗鱼网络科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810327912.8/1.html,转载请声明来源钻瓜专利网。