[发明专利]一种数据处理方法、装置、设备及介质有效
申请号: | 201911043428.3 | 申请日: | 2019-10-30 |
公开(公告)号: | CN110781016B | 公开(公告)日: | 2021-04-23 |
发明(设计)人: | 马凌;何昌华 | 申请(专利权)人: | 支付宝(杭州)信息技术有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54;G06F9/48 |
代理公司: | 北京晋德允升知识产权代理有限公司 11623 | 代理人: | 刘立升 |
地址: | 310000 浙江省杭州市*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 数据处理 方法 装置 设备 介质 | ||
1.一种数据处理方法,包括:
接收到待获锁线程的获锁请求时,通过处理器的共享缓存进行锁数据和待获锁线程的线程数据的交互,根据所述锁数据确定锁是否被占用;
若否,则使所述待获锁线程获得锁;
若是,则当占锁线程的目标线程数据满足预设条件时,使所述待获锁线程获得锁;
和/或,
接收到占锁线程的解锁请求时,确定所述占锁线程占锁前通过处理器的共享缓存与锁进行数据交互时,写入到所述共享缓存中的线程数据是否被更改;
若被更改,则更改所述占锁线程的线程数据,使所述占锁线程解锁;
其中,通过处理器的共享缓存进行锁数据和待获锁线程的线程数据的交互包括:从共享缓存中读取用于交互的锁数据并放入所述线程对应的流水线;以及,将用于交互的线程数据写入共享缓存中所述锁的缓存行;
其中,所述锁数据为空或所述锁数据为上一个与锁进行数据交互的线程的线程数据;所述占锁线程的目标线程数据为所述占锁线程的线程数据;所述线程数据为线程的私有数据地址中的私有数据。
2.如权利要求1所述的方法,所述方法还包括:
接收到占锁线程的解锁请求时,若所述占锁线程占锁前通过共享缓存与锁进行数据交互时,写入到所述共享缓存中的线程数据未被更改,则更改共享缓存中的所述线程数据,使所述占锁线程解锁。
3.如权利要求1所述的方法,根据所述锁数据确定锁是否被占用包括:
若所述锁数据为空,则所述锁未被占用;
若所述锁数据不为空,则所述锁被占用。
4.如权利要求1所述的方法,当占锁线程的目标线程数据大于所述锁数据时,所述目标线程数据满足预设条件;
其中,所述占锁线程的目标线程数据为存储于所述占锁线程私有数据地址中的所述占锁线程的pending值;所述锁数据为所述待获锁线程从共享缓存中得到的所述占锁线程的pending值。
5.如权利要求1至4中任一项所述的方法,所述目标线程数据属于占锁线程用于与锁进行数据交互的线程数据。
6.如权利要求1至4中任一项所述的方法,所述共享缓存为最后一级缓存。
7.如权利要求1所述的方法,所述私有数据为所述线程的pending值。
8.如权利要求7所述的方法,更改所述占锁线程的所述线程数据包括:
将所述占锁线程的pending值加1。
9.如权利要求2所述的方法,更改所述共享缓存中的线程数据包括:
将交互时写入所述共享缓存的线程数据写为空。
10.一种数据处理方法,包括:
接收到第一线程的获锁请求时,根据锁的与所述第一线程的第一数据对应的数据确定锁是否被占用,并将所述第一数据写入处理器的共享缓存中所述锁的缓存行;
若否,则使所述第一线程获取锁;
若是,则当占锁线程的目标线程数据满足预设条件时,使所述第一线程获取锁;
接收到所述第一线程的解锁请求时,确定所述共享缓存中是否存在所述第一数据;
若不存在,则更改所述第一线程的所述第一数据,使所述第一线程解锁;
若存在,则更改共享缓存中的所述第一数据,使所述第一线程解锁;
其中,所述第一线程的第一数据为所述第一线程的私有数据地址中的私有数据;所述锁的与所述第一线程的第一数据对应的数据为空或所述锁的与所述第一线程的第一数据对应的数据为上一个与锁进行数据交互的线程的私有数据地址中的私有数据;所述占锁线程的目标线程数据为所述占锁线程的私有数据地址中的私有数据。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于支付宝(杭州)信息技术有限公司,未经支付宝(杭州)信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911043428.3/1.html,转载请声明来源钻瓜专利网。