[发明专利]一种多线程的加锁方法及服务器在审
| 申请号: | 201710053628.1 | 申请日: | 2017-01-22 |
| 公开(公告)号: | CN108345495A | 公开(公告)日: | 2018-07-31 |
| 发明(设计)人: | 石鹏;赵健;李轶 | 申请(专利权)人: | 北京国双科技有限公司 |
| 主分类号: | G06F9/48 | 分类号: | G06F9/48;G06F9/50 |
| 代理公司: | 北京集佳知识产权代理有限公司 11227 | 代理人: | 王宝筠 |
| 地址: | 100086 北京市海淀区*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 目标数据 目标对象 多线程 加锁 服务器 访问请求 访问数据 数组对象 集合 标识确定 预置 访问 释放 携带 响应 | ||
本发明实施例公开了一种多线程的加锁方法及服务器。本发明实施例方法包括:接收待访问的目标数据的访问请求,所述访问请求携带所述目标数据的标识;根据所述标识确定数组对象集合中的目标对象,所述标识与所述目标对象具有对应关系,所述数组对象集合中包括预置数量的对象;使用所述目标对象对所述目标数据进行加锁;当所述目标数据访问结束时,释放所述目标数据。本发明实施例中还提供了一种服务器。本发明提供的实施例中当多线程访问数据时,极大的提高了访问数据的响应速度。
技术领域
本发明涉及计算机领域,尤其涉及一种多线程的加锁方法及服务器。
背景技术
多线程(multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。使用多线程技术,提升响应速度以及用户体验等。但是多线程技术难免就会碰到数据同步的问题,而常用的一种解决方案就是加锁。例如,原子自增,原子自减,即使是多个线程同时访问,来保证数据的一致性。
传统的方法中,使用单一锁进行线程控制。例如,通过单一锁的方式来统计访问量,采用Redis内存数据库进行访问量的统计,Redis提供了一种原子级别的自增操作,也就是无论并发访问用户有多少,都会一一进行统计,不会造成数据丢失,即只有当用户设备获取到锁对象后才能进行数据操作(例如读取操作),如果无法获取锁对象,则进行等待,直到获取锁为止。请结合图1进行理解,图1为传统方法中多线程的加锁方法的场景示意图,当用户访问不同的数据(例如,该不同的数据为两篇不同的文章)的时候,需要逐一加锁,增加访问量,释放锁,极其浪费时间(此时的操作和串行执行无异)。
综上所述,传统方法中,对于多线程访问,尤其是并发访问不同的数据时,传统方式的加锁方式导致数据访问效率低下。
发明内容
本发明实施例提供了一种多线程的加锁方法及服务器,用于提高访问数据的响应速度。
第一方面,本发明实施例提供了一种多线程的加锁方法,包括:
接收待访问的目标数据的访问请求,所述访问请求携带所述目标数据的标识;
根据所述标识确定数组对象集合中的目标对象,所述标识与所述目标对象具有对应关系,所述数组对象集合中包括预置数量的对象;
使用所述目标对象对所述目标数据进行加锁;
当所述目标数据访问结束时,释放所述目标数据。
在一种可能的实现方式中,所述根据所述标识确定数组对象集合中的目标对象包括:
对所述标识进行哈希散列计算,得到散列值;
对所述散列值与预置值进行求余运算,得到结果值,所述预置值为所述数组对象集合中对象的数量值;
根据所述结果值确定所述目标对象。
在一种可能的实现方式中,所述接收待访问的目标数据的访问请求之后,所述方法还包括:
确定所述目标数据的类别;
若所述目标数据的类别为热点数据,则为所述目标数据分配目标预置对象,所述热点数据的标识与预置对象具有映射关系,所述热点数据为历史访问量大于或者等于预设阈值的数据;
使用所述目标预置对象对所述目标数据进行加锁。
在一种可能的实现方式中,若所述目标数据的类别为非热点数据,则触发执行根据所述标识确定数组对象集合中的目标对象的步骤,所述非热点数据为历史访问量小于预设阈值的数据。
在一种可能的实现方式中,所述标识为数值,所述根据所述标识确定数组对象集合中的目标对象,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京国双科技有限公司,未经北京国双科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710053628.1/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种定时执行代码的方法及装置
- 下一篇:一种运行应用程序的方法及装置





