一种数据处理方法、装置、设备及介质制造方法及图纸

技术编号:23314912 阅读:23 留言:0更新日期:2020-02-11 17:44
本说明书实施例公开了一种数据处理方法、装置、设备及介质,数据处理方法包括:接收到待获锁线程的获锁请求时,通过处理器的共享缓存进行锁数据和待获锁线程的线程数据的交互,根据所述锁数据确定锁是否被占用;若否,则使所述待获锁线程获得锁;若是,则当占锁线程的目标线程数据满足预设条件时,使所述待获锁线程获得锁;和/或,接收到占锁线程的解锁请求时,确定所述占锁线程占锁前通过处理器的共享缓存与锁进行数据交互时,写入到所述共享缓存中的线程数据是否被更改;若被更改,则更改所述占锁线程的线程数据,使所述占锁线程解锁。

A data processing method, device, equipment and medium

【技术实现步骤摘要】
一种数据处理方法、装置、设备及介质
本申请涉及计算机
,尤其涉及一种数据处理方法、装置、设备及介质。
技术介绍
现有技术中,内存采用了锁机制来控制线程的访问,例如MCS锁,且线程在获取锁时,需要与锁进行数据交换,例如需要交换pending值。现有的锁机制,线程在与锁进行数据交换时,需要先确定需要进行交换的锁数据位于哪一级缓存,例如L1(第一级缓存)、L2(第二级缓存),然后才能去相应的缓存进行数据交换。另外,在前一线程要解锁时,需要等待自身的“指针”数据(info.next数据)被下一线程填入,然后将所述下一线程的pending值进行更改,这样前一线程才可以解锁,也即下一线程才可以获得锁,从而前后两个线程被捆绑在一起,相互影响;其中一个线程出错则会影响另一个线程的获锁或解锁。由此可见,现有的锁机制过程繁杂,运行效率低,进而临界区的执行效率低,冲突更大(即线程花费时间更久)。另外,现有的一些技术,例如RTM(RestrictedTransactionalMemory),可以帮助优化关键区域的性能,但是其仅仅是减少临界区域的粒度,在产生冲突的时候会产生更多延迟,同时实现难度较大。有鉴于此,需要更有效和更高效的锁机制控制方案。
技术实现思路
本说明书实施例提供一种数据处理方法、装置、设备及介质,用以解决如何更有效和更高效地进行锁机制控制的技术问题。为解决上述技术问题,本说明书实施例是这样实现的:本说明书实施例提供一种数据处理方法,包括:接收到待获锁线程的获锁请求时,通过处理器的共享缓存进行锁数据和待获锁线程的线程数据的交互,根据所述锁数据确定锁是否被占用;若否,则使所述待获锁线程获得锁;若是,则当占锁线程的目标线程数据满足预设条件时,使所述待获锁线程获得锁;和/或,接收到占锁线程的解锁请求时,确定所述占锁线程占锁前通过处理器的共享缓存与锁进行数据交互时,写入到所述共享缓存中的线程数据是否被更改;若被更改,则更改所述占锁线程的线程数据,使所述占锁线程解锁。本说明书实施例提供一种数据处理方法,包括:接收到第一线程的获锁请求时,根据锁的与所述第一线程的第一数据对应的数据确定锁是否被占用,并将所述第一数据写入处理器的共享缓存中所述锁的缓存行;若否,则使所述第一线程获取锁;若是,则当占锁线程的目标线程数据满足预设条件时,使所述第一线程获取锁;接收到所述第一线程的解锁请求时,确定所述共享缓存中是否存在所述第一数据;若不存在,则更改所述第一线程的所述第一数据,使所述第一线程解锁;若存在,则更改共享缓存中的所述第一数据,使所述第一线程解锁。本说明书实施例提供一种数据处理装置,包括:加锁模块,用于接收到待获锁线程的获锁请求时,通过处理器的共享缓存进行锁数据和待获锁线程的线程数据的交互,根据所述锁数据确定锁是否被占用;以及,若锁未被占用,则使所述待获锁线程获得锁;若锁被占用,则当占锁线程的目标线程数据满足预设条件时,使所述待获锁线程获得锁;和/或,解锁模块,用于接收到占锁线程的解锁请求时,确定所述占锁线程占锁前通过处理器的共享缓存与锁进行数据交互时,写入到所述共享缓存中的线程数据是否被更改;以及,用于若在交互时写入所述共享缓存的线程数据被更改,则更改所述占锁线程的线程数据,使所述占锁线程解锁。本说明书实施例提供一种数据处理装置,包括:加锁模块,用于接收到第一线程的获锁请求时,根据锁的与所述第一线程的第一数据对应的数据确定锁是否被占用,并将所述第一数据写入处理器的共享缓存中所述锁的缓存行;以及,若锁未被占用,则使所述第一线程获得锁;若锁被占用,则当占锁线程的目标线程数据满足预设条件时,使所述第一线程获取锁;解锁模块,用于接收到所述第一线程的解锁请求时,确定所述共享缓存中是否存在所述第一数据;以及,用于若不存在所述第一数据,则更改所述第一线程的所述第一数据,使所述第一线程解锁;以及,用于若存在所述第一数据,则更改共享缓存中的所述第一数据,使所述第一线程解锁。本说明书实施例提供一种数据处理设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,使所述至少一个处理器能够:接收到待获锁线程的获锁请求时,通过处理器的共享缓存进行锁数据和待获锁线程的线程数据的交互,根据所述锁数据确定锁是否被占用;若否,则使所述待获锁线程获得锁;若是,则当占锁线程的目标线程数据满足预设条件时,使所述待获锁线程获得锁;和/或,接收到占锁线程的解锁请求时,确定所述占锁线程占锁前通过处理器的共享缓存与锁进行数据交互时,写入到所述共享缓存中的线程数据是否被更改;若被更改,则更改所述占锁线程的线程数据,使所述占锁线程解锁。本说明书实施例提供一种数据处理设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,使所述至少一个处理器能够:接收到第一线程的获锁请求时,根据锁的与所述第一线程的第一数据对应的数据确定锁是否被占用,并将所述第一数据写入处理器的共享缓存中所述锁的缓存行;若否,则使所述第一线程获取锁;若是,则当占锁线程的目标线程数据满足预设条件时,使所述第一线程获取锁;接收到所述第一线程的解锁请求时,确定所述共享缓存中是否存在所述第一数据;若不存在,则更改所述第一线程的所述第一数据,使所述第一线程解锁;若存在,则更改共享缓存中的所述第一数据,使所述第一线程解锁。本说明书实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令被处理器执行时实现如下的步骤:接收到待获锁线程的获锁请求时,通过处理器的共享缓存进行锁数据和待获锁线程的线程数据的交互,根据所述锁数据确定锁是否被占用;若否,则使所述待获锁线程获得锁;若是,则当占锁线程的目标线程数据满足预设条件时,使所述待获锁线程获得锁;和/或,接收到占锁线程的解锁请求时,确定所述占锁线程占锁前通过处理器的共享缓存与锁进行数据交互时,写入到所述共享缓存中的线程数据是否被更改;若被更改,则更改所述占锁线程的线程数据,使所述占锁线程解锁。本说明书实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令被处理器执行时实现如下的步骤:接收到第一线程的获锁请求时,根据锁的与所述第一线程的第一数据对应的数据确定锁是否被占用,并将所述第一数据写入处理器的共享缓存中所述锁的缓存行;若否,则使所述第一线程获取锁;若是,则当占锁线程的目标本文档来自技高网...

【技术保护点】
1.一种数据处理方法,包括:/n接收到待获锁线程的获锁请求时,通过处理器的共享缓存进行锁数据和待获锁线程的线程数据的交互,根据所述锁数据确定锁是否被占用;/n若否,则使所述待获锁线程获得锁;/n若是,则当占锁线程的目标线程数据满足预设条件时,使所述待获锁线程获得锁;/n和/或,/n接收到占锁线程的解锁请求时,确定所述占锁线程占锁前通过处理器的共享缓存与锁进行数据交互时,写入到所述共享缓存中的线程数据是否被更改;/n若被更改,则更改所述占锁线程的线程数据,使所述占锁线程解锁。/n

【技术特征摘要】
1.一种数据处理方法,包括:
接收到待获锁线程的获锁请求时,通过处理器的共享缓存进行锁数据和待获锁线程的线程数据的交互,根据所述锁数据确定锁是否被占用;
若否,则使所述待获锁线程获得锁;
若是,则当占锁线程的目标线程数据满足预设条件时,使所述待获锁线程获得锁;
和/或,
接收到占锁线程的解锁请求时,确定所述占锁线程占锁前通过处理器的共享缓存与锁进行数据交互时,写入到所述共享缓存中的线程数据是否被更改;
若被更改,则更改所述占锁线程的线程数据,使所述占锁线程解锁。


2.如权利要求1所述的方法,所述方法还包括:
接收到占锁线程的解锁请求时,若所述占锁线程占锁前通过共享缓存与锁交互数据时,写入到所述共享缓存中的线程数据未被更改,则更改共享缓存中的所述线程数据,使所述占锁线程解锁。


3.如权利要求1所述的方法,通过处理器的共享缓存进行锁数据和待获锁线程的线程数据的交互包括:
从共享缓存中读取用于交互的锁数据并放入所述线程对应的流水线;以及,
将用于交互的线程数据写入共享缓存中所述锁的缓存行。


4.如权利要求1所述的方法,根据所述锁数据确定锁是否被占用包括:
若所述锁数据为空,则所述锁未被占用;
若所述锁数据不为空,则所述锁被占用。


5.如权利要求1所述的方法,当占锁线程的目标线程数据大于所述锁数据时,所述目标线程数据满足预设条件。


6.如权利要求1至5中任一项所述的方法,所述目标线程数据属于占锁线程用于与锁进行数据交互的线程数据。


7.如权利要求1至5中任一项所述的方法,所述共享缓存为最后一级缓存。


8.如权利要求1至5中任一项所述的方法,所述线程数据包括所述线程的私有数据地址和私有数据。


9.如权利要求8所述的方法,所述私有数据为所述线程的pending值。


10.如权利要求9所述的方法,更改所述线程的所述线程数据包括:
将所述线程的pending值加1。


11.如权利要求2所述的方法,更改所述共享缓存中的线程数据包括:
将交互时写入所述共享缓存的线程数据写为空。


12.一种数据处理方法,包括:
接收到第一线程的获锁请求时,根据锁的与所述第一线程的第一数据对应的数据确定锁是否被占用,并将所述第一数据写入处理器的共享缓存中所述锁的缓存行;
若否,则使所述第一线程获取锁;
若是,则当占锁线程的目标线程数据满足预设条件时,使所述第一线程获取锁;
接收到所述第一线程的解锁请求时,确定所述共享缓存中是否存在所述第一数据;
若不存在,则更改所述第一线程的所述第一数据,使所述第一线程解锁;
若存在,则更改共享缓存中的所述第一数据,使所述第一线程解锁。


13.如权利要求12所述的方法,所述方法还包括:
接收到第二线程的获锁请求时,根据锁的与所述第二线程的第二数据对应的数据确定锁是否被占用,并将所述第二数据写入所述共享缓存中所述锁的缓存行;
若否,则使所述第二线程获取所述锁;
若是,则所述第一数据满足预设条件时,使所述第二线程获取所述锁。


14.如权利要求13所述的方法,所述方法还包括:
接收到所述第二线程的解锁请求时,确定所述缓存行中是否存在所述第二数据;
若不存在,则更改所述第二线程的所述第二数据,使所述第二线程解锁。
和/或,
接收到所述第二线程的解锁请求时,确定所述缓存行中是否存在所述第二数据;
若存在,则更改所述共享缓存中的第二数据,使所述第二线程解锁。


15.如权利要求13所述的方法,若接收所述第二线程的获锁请求早于接收所述第一线程的解锁请求,则所述锁的与所述第二数据对应的数据为所述第一数据;
和/或,
若接收所述第二线程的获锁请求晚于接收所述第一线程的解锁请求,锁的则所述锁的与所述第二数据对应的数据为对所述共享缓存中的第一数据进行更改后的数据。


16.如权利要求12至15中任一项所述的方法,根据锁的与所述第一线程的第一数据对应的数据确定锁是否被占用包括:
若锁的与所述第一线程的第一数据对应的数据为空,则所述锁未被占用;
若锁的与所述第一线程的第一数据对应的数据不为空,则所述锁被占用。


17.如权利要求12至15中任一项所述的方法,对任一数据,若该数据大于与之对应的锁数据,则该数据满足预设条件。


18.如权利要求12至15中任一项所述的方法,所述目标线程数据属于占锁线程用于写入共享缓存的数据。


19.如权利要求12至15中任一项所述的方法,所述共享缓存为最后一级缓存。


20.如权利要求12至15中任一项所述的方法,所述第一数据包括所述第一线程的私有数据地址和私有数据。


21.如权利要求12至15中任一项所述的方法,所述第一数据为所述第一线程的pending值。


22.如权利要求21所述的方法,更改所述第一线程的所述第一数据包括:...

【专利技术属性】
技术研发人员:马凌何昌华
申请(专利权)人:支付宝杭州信息技术有限公司
类型:发明
国别省市:浙江;33

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

1