多线程服务退出方法、装置、存储介质和计算机设备与流程

文档序号:33992738发布日期:2023-04-29 15:57阅读:39来源:国知局
多线程服务退出方法、装置、存储介质和计算机设备与流程

本申请涉及计算机,尤其涉及一种多线程服务退出方法、装置、存储介质和计算机设备。


背景技术:

1、随着计算机技术的发展,许多软件程序会通过对外开放接口的方式提供对应的服务。而许多软件程序是在多线程环境下运行的,当某一接口服务已停止服务时会有其他线程继续调用该接口服务。停止退出接口服务的逻辑和接口本身的业务逻辑会出现并发重叠,从而造成程序崩溃。传统方案是加锁来解决,但对于频繁调用的接口来说,频繁加锁放锁会影响运行效率。


技术实现思路

1、本申请的目的旨在至少能解决上述的技术缺陷之一,特别是现有技术中健壮性测试结果不够准确的技术缺陷。

2、第一方面,本申请实施例提供了一种多线程服务退出方法,包括:

3、初始化记录原子变量,以使记录原子变量的计数位清零以及状态位表示目标服务处于运行状态;

4、响应于任意一个线程对目标服务的调用请求,获取状态位;

5、判断状态位是否表示目标服务处于停止状态,若是,则反馈错误调用信息,若否,则使计数位增加第一数值,并执行目标服务对应的业务逻辑,以及在业务逻辑执行完成后,使计数位减少第一数值;

6、响应于针对目标服务的停止服务请求,对状态位进行更新,以使状态位表示目标服务处于停止状态,并在计数位清零的情况下,执行目标服务对应的退出逻辑。

7、在其中一个实施例中,记录原子变量为多位整数型原子变量,记录原子变量的最低位为状态位,记录原子变量的其余位为计数位。

8、在其中一个实施例中,获取状态位包括:

9、读取记录原子变量;

10、将读取结果与1做与运算,得到状态位。

11、在其中一个实施例中,第一数值为2。

12、在其中一个实施例中,状态位等于1时,状态位表示目标服务处于停止状态,状态位等于0时,状态位表示目标服务处于运行状态。

13、在其中一个实施例中,使计数位增加第一数值,包括:

14、利用原子增操作使计数位增加第一数值。

15、在其中一个实施例中,使计数位减少第一数值,包括:

16、利用原子减操作使计数位减少第一数值。

17、第二方面,本申请实施例提供了一种多线程服务退出装置,包括:

18、初始化模块,用于初始化记录原子变量,以使记录原子变量的计数位清零以及状态位表示目标服务处于运行状态;

19、第一处理模块,用于响应于任意一个线程对目标服务的调用请求,获取状态位;

20、第二处理模块,用于判断状态位是否表示目标服务处于停止状态,若是,则反馈错误调用信息,若否,则使计数位增加第一数值,并执行目标服务对应的业务逻辑,以及在业务逻辑执行完成后,使计数位减少第一数值;

21、第三处理模块,用于响应于针对目标服务的停止服务请求,对状态位进行更新,以使状态位表示目标服务处于停止状态,并在计数位清零的情况下,执行目标服务对应的退出逻辑。

22、第三方面,本申请实施例提供了一种计算机设备,包括一个或多个处理器,以及存储器,存储器中存储有计算机可读指令,计算机可读指令被一个或多个处理器执行时,执行上述任一实施例中的多线程服务退出方法的步骤。

23、第四方面,本申请实施例提供了一种存储介质,存储介质中存储有计算机可读指令,计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行上述任一实施例中的多线程服务退出方法的步骤。

24、从以上技术方案可以看出,本申请实施例具有以下优点:

25、基于上述任一实施例,首先设置一个包含状态位和计数位的记录原子变量,在目标服务对外开始服务前初始化记录原子变量,表示目标服务当前的服务对象为零且目标服务正处于运行状态。对处理任意一个线程对目标服务的调用请求时,若状态位反映目标服务处于停止状态,则直接向请求方反馈错误调用信息,无法对调用请求进行处理。若状态位反映目标服务处于运行状态,则通过对计数位的修改统计目标服务正在服务的对象数量,并按照目标服务原先的业务逻辑处理请求方的调用请求。当目标服务接收到停止服务请求时,将状态位调整为表示目标服务处于停止状态,目标服务不会对新的调用请求提供服务,并根据计数位的统计情况判定当前的所有调用处理完成后,执行目标服务的退出逻辑。本实施例中的方法通过无锁的方案解决多线程服务退出时的逻辑冲突问题,采用单一的记录原子变量而非两个独立的原子变量避免了多线程变量操作过程中可能出现的活锁问题,大大提高了多线程服务退出的稳定性和运行效率。



技术特征:

1.一种多线程服务退出方法,其特征在于,包括:

2.根据权利要求1所述的多线程服务退出方法,其特征在于,所述记录原子变量为多位整数型原子变量,所述记录原子变量的最低位为所述状态位,所述记录原子变量的其余位为所述计数位。

3.根据权利要求2所述的多线程服务退出方法,其特征在于,所述获取所述状态位包括:

4.根据权利要求2所述的多线程服务退出方法,其特征在于,所述第一数值为2。

5.根据权利要求4所述的多线程服务退出方法,其特征在于,所述状态位等于1时,所述状态位表示所述目标服务处于所述停止状态,所述状态位等于0时,所述状态位表示所述目标服务处于所述运行状态。

6.根据权利要求1所述的多线程服务退出方法,其特征在于,所述使所述计数位增加第一数值,包括:

7.根据权利要求1所述的多线程服务退出方法,其特征在于,所述使所述计数位减少所述第一数值,包括:

8.一种多线程服务退出装置,其特征在于,包括:

9.一种计算机设备,其特征在于,包括一个或多个处理器,以及存储器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述一个或多个处理器执行时,执行如权利要求1-7任一项所述的多线程服务退出方法的步骤。

10.一种存储介质,其特征在于,所述存储介质中存储有计算机可读指令,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如权利要求1-7任一项所述的多线程服务退出方法的步骤。


技术总结
本申请提供了一种多线程服务退出方法、装置、存储介质、计算机设备。该方法包括:初始化记录原子变量,以使记录原子变量的计数位清零以及状态位表示目标服务处于运行状态;响应于任意一个线程对目标服务的调用请求,获取状态位;判断状态位是否表示目标服务处于停止状态,若是,则反馈错误调用信息,若否,则使计数位增加第一数值,并执行目标服务对应的业务逻辑,以及在业务逻辑执行完成后,使计数位减少第一数值;响应于针对目标服务的停止服务请求,对状态位进行更新,以使状态位表示目标服务处于停止状态,并在计数位清零的情况下,执行目标服务对应的退出逻辑。该方法通过无锁的方案解决服务退出逻辑冲突问题,提高运行效率。

技术研发人员:刘源
受保护的技术使用者:广州文远知行科技有限公司
技术研发日:
技术公布日:2024/1/11
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1