分布式锁的重入执行方法、装置、设备及可读存储介质与流程

文档序号:32745959发布日期:2022-12-30 22:08阅读:40来源:国知局

1.本发明涉及通信技术领域,具体涉及一种分布式锁的重入执行方法、装置、设备及可读存储介质。


背景技术:

2.分布式环境中通常存在有不同的进程,每个进程包含一个或多个线程,如果多个进程中的线程均需对某一资源进行操作,那么不同进程中的线程则会存在互斥访问,从而彼此干扰。为了避免这一情况的产生,通常使用分布式锁为各个线程进行加锁处理。
3.目前,分布式锁的典型代表为redis,其实现工具为redisson。尽管redisson能够为一个进程中的多个线程分配分布式锁,但是redisson要求同一把锁必须由同一个线程才能重复获取,受线程的限制,难以实现针对于任何线程的锁重入机制。


技术实现要素:

4.有鉴于此,本发明实施例提供了一种分布式锁的重入执行方法、装置、设备及可读存储介质,以解决难以实现针对于任何线程的锁重入机制的问题。
5.根据第一方面,本发明实施例提供了一种分布式锁的重入执行方法,包括:获取执行加锁过程的第一线程;当所述第一线程加锁成功时,生成所述第一线程对应的目标加锁信息,控制所述第一线程基于所述目标加锁信息执行目标任务,所述目标加锁信息包括目标锁标识;当所述第一线程的目标任务执行结束后,控制所述第一线程将所述目标锁标识传递至第二线程;基于所述目标锁标识控制所述第二线程执行锁重入机制。
6.本发明实施例提供的分布式锁的重入执行方法,在第一线程加锁成功且任务执行结束后,通过控制第一线程将目标锁标识传递至第二线程,以使第二线程能够根据该目标锁标识获取第一线程的锁,并执行锁重入机制。由此对于不同的线程而言,只要其能获取到锁标识即能实现相应的锁重入,不再受限于同一加锁线程才能够执行锁重入,即任何线程只有拥有相应的锁标识就可以重复加锁,实现了灵活的锁重入机制。
7.结合第一方面,在第一方面的第一实施方式中,所述基于所述目标锁标识控制所述第二线程执行锁重入机制,包括:判断所述目标锁标识与所述第一线程的加锁标识是否一致;当所述目标锁标识与所述第一线程的加锁标识一致时,获取所述第一线程对应的目标锁;控制所述第二线程基于所述目标锁执行锁重入机制,并更新锁重入次数。
8.结合第一方面第一实施方式,在第一方面的第二实施方式中,所述方法还包括:当所述目标锁标识与所述第一线程的加锁标识不一致时,判定所述第二线程加锁失败,并生成加锁失败信息。
9.本发明实施例提供的分布式锁的重入执行方法,通过将第二线程的目标锁标识与第一线程的加锁标识进行对比,以确定第二线程是否能够加锁成功,由此能够保证第二线程能够根据第一线程所对应的目标锁进行加锁,实现跨进程的锁重入机制,保证不同的进程能够采用同一把锁,使得加锁处理更加灵活。
10.结合第一方面,在第一方面的第三实施方式中,在所述基于所述目标锁标识控制所述第二线程执行锁重入机制之后,所述方法还包括:判断是否存在针对于所述第二线程的续期标识信息;当不存在针对于所述第二线程的续期标识信息时,获取针对于所述第二线程的续期标识信息;基于所述续期标识信息启动所述第二线程的续期线程,所述续期线程用于延迟加锁的有效时长。
11.结合第一方面第三实施方式,在第一方面的第四实施方式中,所述基于所述续期标识信息启动所述第二线程的续期线程,包括:获取所述第二线程的加锁持续时间;判断所述加锁持续时间是否达到预设时间;当所述加锁持续时间达到所述预设时间时,基于所述续期标识信息启动所述续期线程,延长所述第二线程的加锁有效时长。
12.本发明实施例提供的分布式锁的重入执行方法,在第二线程处于锁重入状态时,根据其续期标识信息以及加锁持续时间控制续期线程的执行,保证了第二线程执行任务的顺利性,避免其与其他线程产生冲突。
13.结合第一方面第三实施方式,在第一方面的第五实施方式中,所述方法还包括:获取所述第二线程的任务执行状态;基于所述目标锁标识释放所述目标锁,更新所述锁重入次数;当所述锁重入次数更新为1时,基于所述目标锁标识释放所述目标锁并停止所述第一线程和/或所述第二线程对应的续期线程。
14.本发明实施例提供的分布式锁的重入执行方法,在线程完成任务执行后进行解锁处理,停止续期线程,以对目标锁进行释放,便于其他线程能够进入,保证了线程的运行效果。
15.结合第一方面,在第一方面的第六实施方式中,所述获取执行加锁过程的第一线程,包括:响应于对加锁注解的输入操作,基于所述加锁注解对所述第一线程进行加锁处理,其中,所述加锁注解为基于加锁重入处理所预先生成的注解信息。
16.本发明实施例提供的分布式锁的重入执行方法,通过预先生成加锁注解,并根据该加锁注解对第一线程进行加锁处理,由此避免输入繁琐的加锁模板代码,使得加锁处理更加便捷。
17.根据第二方面,本发明实施例提供了一种分布式锁的重入执行装置,包括:获取模块,用于获取执行加锁过程的第一线程;生成模块,用于当所述第一线程加锁成功时,生成所述第一线程对应的目标加锁信息,控制所述第一线程基于所述目标加锁信息执行目标任务,所述目标加锁信息包括目标锁标识;第一控制模块,用于当所述第一线程的目标任务执行结束后,控制所述第一线程将所述目标锁标识传递至第二线程;第二控制模块,用于基于所述目标锁标识控制所述第二线程执行锁重入机制。
18.根据第三方面,本发明实施例提供了一种电子设备,包括:存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行第一方面或第一方面任一实施方式所述的分布式锁的重入执行方法。
19.根据第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使计算机执行第一方面或第一方面任一实施方式所述的分布式锁的重入执行方法。
20.需要说明的是,本发明实施例提供的分布式锁的重入执行装置、电子设备以及计
算机可读存储介质的相应有益效果,请参见分布式锁的重入执行方法中相应内容的描述,在此不再赘述。
附图说明
21.为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
22.图1是根据本发明实施例的分布式锁的重入执行方法的流程图;
23.图2是根据本发明实施例的分布式锁的重入执行方法的另一流程图;
24.图3是根据本发明实施例的分布式锁的重入执行方法的又一流程图;
25.图4是根据本发明实施例的分布式锁的重入执行装置的结构框图;
26.图5是本发明实施例提供的电子设备的硬件结构示意图。
具体实施方式
27.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
28.目前,比较流行的分布式锁的实现工具是redisson,但该工具在使用过程中存在一定的缺陷:1)redisson要求同一把锁必须由同一个线程才能重复获取,受限于同一个加锁线程,难以实现针对于任何线程的重复加锁,在锁重入机制的实现上不够灵活。2)redisson使用较为繁琐,在进行加锁时需要输入繁琐的模板代码。如下所示的代码,只有“dosomething()”这一部分与业务场景有关,其它代码均是为了加锁而写的模板代码:
29.rlock lock=redissonclient.getlock(

xxxx

);
30.try{
31.lock.lock();
32.}catch(illegalstateexception e){
33.e.printstacktrace();
34.}
35.try{
36.//加锁成功,执行业务代码
37.dosomething();
38.}finally{
39.lock.unlock();
40.}
41.基于此,本发明技术方案基于目标线程的加锁信息确定其当前所处状态,当其处于锁重入状态时,记录锁重入次数,并根据目标线程的任务执行状态控制加锁的续期线程。对于不同的线程而言,只要其能获取到加锁信息即可实现锁重入,不再受限于同一加锁线
程才能够执行锁重入,即任何线程只要拥有加锁信息就可以重复加锁。同时,只需在实现任务场景的代码上加上加锁注解即可在执行任务时实现自动加锁,如果加锁失败则不执行任务;加锁成功则执行任务,待任务执行结束后自动解锁。相较于现有的模板代码,其使用更加便捷。
42.根据本发明实施例,提供了一种分布式锁的重入执行方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
43.在本实施例中提供了一种分布式锁的重入执行方法,可用于电子设备,如手机、平板电脑、电脑等,图1是根据本发明实施例的分布式锁的重入执行方法的流程图,如图1所示,该流程包括如下步骤:
44.s11,获取执行加锁过程的第一线程。
45.第一线程为一个进程中的任意一个线程。当第一线程需要访问某一资源或对某一信息进行读写处理时,第一线程需要对该资源或信息尝试进行加锁处理,以避免与其他线程产生冲突。
46.s12,当第一线程加锁成功时,生成第一线程对应的目标加锁信息,控制第一线程基于目标加锁信息执行目标任务。
47.其中,目标加锁信息包括目标锁标识。
48.目标加锁信息为第一线程对其所访问资源或读写信息的加锁信息,通过该目标加锁信息能够表征第一线程是否抢占到锁。具体地,当第一线程尝试加锁成功时,表示第一线程抢占到锁,此时,电子设备会生成对应于第一线程的目标加锁信息。
49.目标锁标识为第一线程所加锁的全局唯一性标识,该目标锁标识可以采用lockvalue表示。若第一线程所加的目标锁为lockkey,则目标锁lockkey与目标锁标识lockvalue是一一对应的,基于目标锁标识lockvalue即可对应到目标锁lockkey。
50.在第一线程抢占到目标锁之后,第一线程即可执行其目标任务。此处的目标任务可以采用代码程序实现,目标任务即第一线程在成功加锁之后所需执行的代码。
51.s13,当第一线程的目标任务执行结束后,控制第一线程将目标锁标识传递至第二线程。
52.第二线程为第一线程执行结束后所需执行的线程,即第一线程和第二线程需要连续执行。正常情况下,在第一线程完成目标任务的执行后,其可以释放所加锁以供其他线程使用。
53.此处,为了避免第一线程所释放的锁被其他线程抢占而影响第二线程的连续执行,在第一线程完成针对于目标任务的执行后,其并不会释放锁,而是将目标锁标识传递至第二线程,由此即可避免其他线程与第二线程抢占锁。
54.s 14,基于目标锁标识控制第二线程执行锁重入机制。
55.锁重入机制为同一把锁的重复获取。第二线程在接收到第一线程传递的目标锁标识后,根据该目标锁标识对应至相应的目标锁。此时,第二线程即可获取到目标锁,并基于该目标锁执行相应的任务,即第二线程与第一线程实现了同一把锁重复获取,实现了不同进程的锁重入机制。
56.需要说明的是,上述方式同样可以应用于不同进程针对于分布式锁的重入机制,即只要不同进程拥有相同的锁标识就可以重复加锁,实现了跨进程的锁重入机制。
57.本实施例提供的分布式锁的重入执行方法,在第一线程加锁成功且任务执行结束后,通过控制第一线程将目标锁标识传递至第二线程,以使第二线程能够根据该目标锁标识获取第一线程的锁,并执行锁重入机制。由此对于不同的线程而言,只要其能获取到锁标识即能实现相应的锁重入,不再受限于同一加锁线程才能够执行锁重入,即任何线程只有拥有相同的锁标识就可以重复加锁,实现了灵活的锁重入机制。
58.在本实施例中提供了一种分布式锁的重入执行方法,可用于电子设备,如手机、平板电脑、电脑等,图2是根据本发明实施例的分布式锁的重入执行方法的流程图,如图2所示,该流程包括如下步骤:
59.s21,获取执行加锁过程的第一线程。
60.详细说明参见上述实施例对应的相关描述,此处不再赘述。
61.s22,当第一线程加锁成功时,生成第一线程对应的目标加锁信息,控制第一线程基于目标加锁信息执行目标任务。
62.其中,目标加锁信息包括目标锁标识。
63.详细说明参见上述实施例对应的相关描述,此处不再赘述。
64.s23,当第一线程的目标任务执行结束后,控制第一线程将目标锁标识传递至第二线程。
65.具体地,上述步骤s23可以包括:
66.s231,判断目标锁标识与第一线程的加锁标识是否一致。
67.第一线程的加锁标识为第一线程所加锁的标识,即第一线程所加锁的全局唯一性标识。
68.正常情况下,第一线程传递至第二线程的目标锁标识即为其所加锁的标识。此处为了进一步确保第二线程能够顺利执行,电子设备可以将第二线程接收到目标锁标识与第一线程的加锁标识进行比对,以确定两者是否一致。当目标锁标识与第一线程的加锁标识一致时,执行步骤s232,否则执行步骤s234。
69.s232,获取第一线程对应的目标锁。
70.当目标锁标识与第一线程的加锁标识一致时,表示第一线程所加锁与目标锁标识匹配,即第二线程能够加锁成功。此时,第二线程可以获取目标锁标识对应的目标锁,即第一线程加锁成功后所生成的目标锁。
71.s233,控制第二线程基于目标锁执行锁重入机制,并更新锁重入次数。
72.第二线程加锁成功后,表示第二线程与第一线程能够重复获取同一把锁,相当于第二线程执行了锁重入机制。此时,电子设备对目标锁的锁重入次数进行更新,以确定重复获取目标锁的次数。
73.例如,第一线程获取到目标锁之后,其对应的锁重入次数为1,当第二线程再次获取到目标锁后,则目标锁对应的锁重入次数为2,即第二线程获取目标锁的过程相当于目标锁的重入过程。
74.s234,判定第二线程加锁失败,并生成加锁失败信息。
75.当目标锁标识与第一线程的加锁标识不一致时,表示第二线程并未获取到第一线
程所加锁,第二线程无法接续第一线程执行。此时,电子设备可以判定第二线程加锁失败,并生成第二线程加锁失败信息反馈至技术人员,便于技术人员根据该加锁失败信息进行运维、调试。
76.需要说明的是,若由于网络原因或其他故障原因导致第一线程并未将目标锁标识传递至第二线程时,则第二线程不具有第一线程所加锁的标识信息,此时仍然会导致第二线程的加锁失败,亦会生成相应的加锁失败信息。
77.s24,基于目标锁标识控制第二线程执行锁重入机制。
78.详细说明参见上述实施例对应的相关描述,此处不再赘述。
79.本实施例提供的分布式锁的重入执行方法,通过将第二线程的目标锁标识与第一线程的加锁标识进行对比,以确定第二线程是否能够加锁成功,由此能够保证第二线程能够根据第一线程所对应的目标锁进行加锁,实现跨进程的锁重入机制,保证不同的进程能够采用同一把锁,使得加锁处理更加灵活。
80.在本实施例中提供了一种分布式锁的重入执行方法,可用于电子设备,如手机、平板电脑、电脑等,图3是根据本发明实施例的分布式锁的重入执行方法的流程图,如图3所示,该流程包括如下步骤:
81.s31,获取执行加锁过程的第一线程。
82.具体地,上述步骤s31可以包括:响应于对加锁注解的输入操作,基于加锁注解对第一线程进行加锁处理。
83.其中,加锁注解为基于加锁重入处理所预先生成的注解信息。
84.在需要执行加锁过程的业务线程上添加加锁注解,由此在业务线程执行前,自动加锁,如果加锁失败则不执行业务线程;加锁成功则执行业务线程,业务线程执行结束,则自动解锁。
85.具体地,该加锁注解是基于上述实施例所述的不同线程的锁重入机制所预先封装生成的注解信息,例如lock注解:
86.@lock
87.dosomething()
88.技术人员在需要执行加锁处理的第一线程dosomething()之前输入加锁注解,相应地,电子设备能够响应技术人员对于加锁注解的输入操作,根据该输入操作在相应的位置生成加锁注解,并在执行到该第一线程dosomething()时,基于该加锁注解对第一线程dosomething()进行加锁处理。
89.通过预先生成加锁注解,并根据该加锁注解对第一线程进行加锁处理,由此避免输入繁琐的加锁模板代码,使得加锁处理更加便捷。
90.s32,当第一线程加锁成功时,生成第一线程对应的目标加锁信息,控制第一线程基于目标加锁信息执行目标任务。
91.其中,目标加锁信息包括目标锁标识。
92.详细说明参见上述实施例对应的相关描述,此处不再赘述。
93.s33,当第一线程的目标任务执行结束后,控制第一线程将目标锁标识传递至第二线程。
94.详细说明参见上述实施例对应的相关描述,此处不再赘述。
95.s34,基于目标锁标识控制第二线程执行锁重入机制。
96.详细说明参见上述实施例对应的相关描述,此处不再赘述。
97.s35,判断是否存在针对于第二线程的续期标识信息。
98.续期标识信息为执行续期线程的标识,该续期标识信息可以与目标锁、目标锁标识作为一个对象整体放入线程局部变量threadlocal中。通常,为了避免某一线程意外中断而导致死锁,会为目标锁设定一个有效时长,即目标锁到达有效时长后,若不启动续期则自动释放。
99.若第二线程的加锁持续时间到达目标锁的有效时长时,仍未结束任务执行,此时第二线程可以对目标锁进行续期,以便继续执行任务。在第二线程需要续期目标锁时,电子设备可以检测线程局部变量threadlocal中是否存在有第二线程的续期标识信息。当不存在针对于第二线程的续期标识信息时,执行步骤s36,否则基于续期标识信息启动续期线程,并返回目标锁对应的锁重入次数。
100.s36,获取针对于第二线程的续期标识信息。
101.当不存在针对于第二线程的续期标识信息时,电子设备可以为第二线程分配相应的续期标识信息,并将续期标识信息、目标锁、目标锁标识作为一个对象整体放入线程局部变量threadlocal中,便于后期直接调用。
102.s37,基于续期标识信息启动第二线程的续期线程。
103.其中,续期线程用于延迟加锁的有效时长。
104.续期线程与第二线程不同,其作为一个独立于第二线程的执行线程,只有在第二线程的加锁持续时长将要到达有效时长且第二线程仍在正常执行任务时,对第二线程的目标锁进行续期,以延迟目标锁有效时长,保证第二线程能够继续执行任务,直至任务完成。
105.具体地,上述步骤s37可以包括:
106.(1)获取第二线程的加锁持续时间。
107.加锁持续时间为第二线程加锁成功的持续时间,该加锁持续时间从第二线程加锁成功时累计。
108.(2)判断加锁持续时间是否达到预设时间。
109.预设时间为预先设定加锁持续时间,该预设时间小于加锁的有效时长,由此能够避免续期不及时而影响线程运行效果。例如,加锁的有效时长为10s,则该预设时间可以设定为8s。
110.在第二线程加锁成功后,对加锁持续时间与预设时间进行比较,以确定加锁持续时间是否达到预设时间。当加锁持续时间达到预设时间时,执行步骤(3),否则继续监测加锁持续时间。
111.(3)基于续期标识信息启动续期线程,延长第二线程的加锁有效时长。
112.当加锁持续时间达到预设时间时,表示第二线程当前正在正常执行任务,且该任务仍未结束。此时,电子设备可以通过续期标识信息调用相应的续期线程,通过执行续期线程来延长第二线程的加锁有效时长。
113.需要说明的是,在第一线程获取到目标锁执行目标任务的过程中,若第一线程的执行时间较长,仍然可以为第一线程分配相应的续期标识信息,以便第一线程正常执行且将要达到目标锁的有效时长后,能够开启续期线程为目标锁进行续期,保证第一线程的运
行效果。
114.s38,基于目标锁标识释放目标锁,更新锁重入次数。
115.电子设备可以实时监测第二线程的任务执行进度,根据任务执行进度确定第二线程的任务执行状态。其中,任务执行状态用于表征第二线程执行任务的当前状态,该任务执行状态包括正常执行状态、完成状态和中断状态。
116.若第二线程的任务未结束,但其执行进度在一定时间内未有变动,则可以确定其任务执行状态处于中断状态。若第二线程的任务执行结束,则可以确定其任务执行状态处于完成状态。
117.在第二线程完成任务执行后,电子设备可以停止针对于第二线程的续期线程,并控制第二线程自己加的目标锁进行释放。具体地,第二线程可以通过对比其具有的目标锁标识与目标锁对应的加锁标识是否匹配,若两者相匹配,则可以对自己加的目标锁进行解锁处理。
118.电子设备根据第二线程所具有的目标锁标识释放其所加的目标锁,此时锁重入次数减1。同时,对更新后的锁重入次数进行判断,以确定锁重入次数是否为1。只有锁重入次数为1时再次释放锁才能完成目标锁的真正释放,否则仅仅是多次重入的一次释放,并不能真正释放目标锁。
119.s39,当锁重入次数更新为1时,基于目标锁标识释放目标锁并停止第一线程和/或第二线程对应的续期线程。
120.当锁重入次数更新为1时,此时再次执行解锁处理,则锁重入次数为0,即目标锁能够被真正释放。此时,电子设备可以采用目标锁标识释放目标锁,同时停止第一线程和/或第二线程对应的续期线程。
121.例如,锁重入次数为4,其中,第二线程对应的锁重入次数为3,第一线程对应的锁重入次数为1。在第二线程的任务执行结束后,电子设备可以控制第二线程进行解锁处理,直至锁重入次数为1时,表示第二线程完成了针对于目标锁的释放。继而,电子设备控制第一线程进行解锁处理,此时锁重入次数更新为0,表示目标锁能够真正释放,以供其他线程抢占使用。若存在续期线程,则在释放目标锁的同时停止续期线程。
122.本实施例提供的分布式锁的重入执行方法,在第二线程处于锁重入状态时,根据其续期标识信息以及加锁持续时间控制续期线程的执行,保证了第二线程执行任务的顺利性,避免其与其他线程产生冲突。在线程完成任务执行后进行解锁处理,停止续期线程,以对目标锁进行释放,便于其他线程能够进入,保证了线程的运行效果。
123.在本实施例中还提供了一种分布式锁的重入执行装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
124.本实施例提供一种分布式锁的重入执行装置,如图4所示,包括:
125.获取模块41,用于获取执行加锁过程的第一线程。
126.生成模块42,用于当第一线程加锁成功时,生成第一线程对应的目标加锁信息,控制第一线程基于目标加锁信息执行目标任务。其中,目标加锁信息包括目标锁标识。
127.第一控制模块43,用于当第一线程的目标任务执行结束后,控制第一线程将目标
锁标识传递至第二线程。
128.第二控制模块44,用于基于目标锁标识控制第二线程执行锁重入机制。
129.可选地,上述第一控制模块43可以包括:
130.判断子模块,用于判断目标锁标识与第一线程的加锁标识是否一致。
131.获取子模块,用于当目标锁标识与第一线程的加锁标识一致时,获取第一线程对应的目标锁。
132.更新子模块,用于控制第二线程基于目标锁执行锁重入机制,并更新锁重入次数。
133.判定子模块,用于当目标锁标识与第一线程的加锁标识不一致时,判定第二线程加锁失败,并生成加锁失败信息。
134.可选地,上述获取模块41具体用于,响应于对加锁注解的输入操作,基于加锁注解对第一线程进行加锁处理。其中,加锁注解为基于加锁重入处理所预先生成的注解信息。
135.可选地,上述分布式锁的重入执行装置还可以包括:
136.判断模块,用于判断是否存在针对于第二线程的续期标识信息。
137.续期标识获取模块,用于当不存在针对于第二线程的续期标识信息时,获取针对于第二线程的续期标识信息。
138.启动模块,用于基于续期标识信息启动第二线程的续期线程。其中,续期线程用于延迟加锁的有效时长。
139.第一释放模块,用于基于目标锁标识释放目标锁,更新锁重入次数。
140.第二释放模块,用于当锁重入次数更新为1时,基于目标锁标识释放目标锁并停止第一线程和/或第二线程对应的续期线程。
141.可选地,上述启动模块具体用于,获取第二线程的加锁持续时间;判断加锁持续时间是否达到预设时间;当加锁持续时间达到预设时间时,基于续期标识信息启动续期线程,延长第二线程的加锁有效时长。
142.本实施例中的分布式锁的重入执行装置装置是以功能单元的形式来呈现,这里的单元是指asic电路,执行一个或多个软件或固定程序的处理器和存储器,和/或其他可以提供上述功能的器件。
143.上述各模块的更进一步的功能描述与上述对应实施例相同,在此不再赘述。
144.本实施例提供的分布式锁的重入执行装置,在第一线程加锁成功且任务执行结束后,通过控制第一线程将目标锁标识传递至第二线程,以使第二线程能够根据该目标锁标识获取第一线程的锁,并执行锁重入机制。由此对于不同的线程而言,只要其能获取到锁标识即能实现相应的锁重入,不再受限于同一加锁线程才能够执行锁重入,即任何线程只有拥有相应的锁标识就可以重复加锁,实现了灵活的锁重入机制。
145.本发明实施例还提供一种电子设备,具有上述图4所示的分布式锁的重入执行装置。
146.请参阅图5,图5是本发明可选实施例提供的一种电子设备的结构示意图,如图5所示,该电子设备可以包括:至少一个处理器501,例如中央处理器(central processing unit,cpu),至少一个通信接口503,存储器504,至少一个通信总线602。其中,通信总线602用于实现这些组件之间的连接通信。其中,通信接口503可以包括显示屏(display)、键盘(keyboard),可选通信接口503还可以包括标准的有线接口、无线接口。存储器504可以是高
速易挥发性随机存取存储器(random access memory,ram),也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器504可选的还可以是至少一个位于远离前述处理器501的存储装置。其中处理器501可以结合图4所描述的装置,存储器504中存储应用程序,且处理器501调用存储器504中存储的程序代码,以用于执行上述任一方法步骤。
147.其中,通信总线602可以是外设部件互连标准(peripheral component interconnect,pci)总线或扩展工业标准结构(extended industry standard architecture,eisa)总线等。通信总线602可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
148.其中,存储器504可以包括易失性存储器(volatile memory),例如随机存取存储器(random-access memory,ram);存储器也可以包括非易失性存储器(non-volatile memory),例如快闪存储器(flash memory),硬盘(hard disk drive,hdd)或固态硬盘(solid-state drive,ssd);存储器504还可以包括上述种类的存储器的组合。
149.其中,处理器501可以是中央处理器(central processing unit,cpu),网络处理器(network processor,np)或者cpu和np的组合。
150.其中,处理器501还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,asic),可编程逻辑器件(programmable logic device,pld)或其组合。上述pld可以是复杂可编程逻辑器件(complex programmable logic device,cpld),现场可编程逻辑门阵列(field-programmable gate array,fpga),通用阵列逻辑(generic array logic,gal)或其任意组合。
151.可选地,存储器504还用于存储程序指令。处理器501可以调用程序指令,实现如本技术图1至图3实施例中所示的分布式锁的重入执行方法。
152.本发明实施例还提供了一种非暂态计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令可执行上述任意方法实施例中的分布式锁的重入执行方法。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(read-only memory,rom)、随机存储记忆体(random access memory,ram)、快闪存储器(flash memory)、硬盘(hard disk drive,hdd)或固态硬盘(solid-state drive,ssd)等;所述存储介质还可以包括上述种类的存储器的组合。
153.虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1