一种线程执行方法、装置、电子设备和存储介质与流程

文档序号:30614950发布日期:2022-07-02 00:43阅读:79来源:国知局
一种线程执行方法、装置、电子设备和存储介质与流程

1.本技术涉及通讯技术领域,具体涉及一种线程执行方法、装置、电子设备和存储介质。


背景技术:

2.线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。一个进程中可以并发多个线程,每条线程并行执行不同的任务。在操作系统中,互相协作的进程之间可能会共享一些彼此能够读写的公共存储区,假设两个进程中的线程都需要改写这个公共存储区,那么这两个线程之间便会产生竞争关系。
3.为了解决这种竞争问题,现有技术中提出了一种锁机制,即当一个线程进入同步的代码块后,就会获得锁对象的使用权。其他线程如果执行到此处,会发现锁对象被占用,只能处于等待状态,当线程执行完同步的代码后或者出现异常,都会自动释放锁。但是,有的线程可能被执行的优先级较高,现有的锁机制并不能兼顾到线程的执行迫切程度,会影响线程执行的时延,进而影响线程执行的有效性。


技术实现要素:

4.本技术实施例提出了一种线程执行方法、装置、电子设备和存储介质,可以在锁机制的情况下兼顾到线程的优先级,从而减少优先级高的线程被执行的时延,提高进程被执行的有效性。
5.本技术实施例提供了一种线程执行方法,包括:
6.接收针对当前线程的同步锁获取指令;
7.基于所述同步锁获取指令,对同步锁进行检测,得到所述同步锁的状态信息;
8.当检测到所述同步锁的状态信息为非空闲状态时,基于所述当前线程,在至少两个预设队列中筛选出目标队列,其中,所述至少两个预设队列中包括至少一个关键线程同步锁等待队列和至少一个非关键线程同步锁等待队列;
9.将所述当前线程添加到所述目标队列中。
10.相应的,本技术实施例还提供了一种线程执行装置,包括:
11.接收单元,用于接收针对当前线程的同步锁获取指令;
12.检测单元,用于基于所述同步锁获取指令,对同步锁进行检测,得到所述同步锁的状态信息;
13.筛选单元,用于当检测到所述同步锁的状态信息为非空闲状态时,基于所述当前线程,在至少两个预设队列中筛选出目标队列,其中,所述至少两个预设队列中包括至少一个关键线程同步锁等待队列和至少一个非关键线程同步锁等待队列;
14.添加单元,用于将所述当前线程添加到所述目标队列中。
15.在一实施例中,所述筛选单元,可以包括:
16.识别子单元,用于当检测到所述同步锁的状态信息为非空闲状态时,识别所述当
前线程的优先级信息;
17.筛选子单元,用于基于所述当前线程的优先级信息,在至少两个预设队列中筛选出目标队列。
18.在一实施例中,所述筛选子单元,可以包括:
19.匹配模块,用于将所述当前线程的优先级信息和预设优先级条件进行匹配;
20.第一确定模块,用于当所述当前线程的优先级信息符合所述预设优先级条件时,确定所述关键线程同步锁等待队列为所述目标队列;
21.第二确定模块,用于当所述当前线程的优先级信息不符合所述预设优先级条件时,确定所述非关键线程同步锁等待队列为所述目标队列。
22.在一实施例中,所述检测单元,可以包括:
23.同步锁获取子单元,用于基于所述同步锁获取指令,为所述当前线程获取所述同步锁,并启动对所述同步锁的监听,得到监听结果;
24.信息生成子单元,用于基于所述监听结果,生成所述同步锁的状态信息。
25.在一实施例中,所述线程执行装置,还可以包括:
26.队列检测单元,用于当检测到所述同步锁的状态信息为空闲状态时,对所述关键线程同步锁等待队列进行检测,得到所述关键线程同步锁等待队列中的线程数量;
27.选取单元,用于基于所述线程数量,通过唤醒模块从所述关键线程同步锁等待队列中选取出待执行线程;
28.锁添加单元,用于将所述同步锁添加给所述待执行线程。
29.在一实施例中,所述选取单元,可以包括:
30.比较子单元,用于将所述线程数量和预设线程阈值进行比较;
31.第一选取子单元,用于当所述线程数量大于所述预设线程阈值时,通过唤醒模块从所述非关键线程同步锁等待队列中选取出待执行线程。
32.在一实施例中,所述选取单元,还可以包括:
33.第二选取子单元,用于当所述线程数量小于或等于所述预设线程阈值时,通过唤醒模块从所述关键线程同步锁等待队列中选取出待执行线程。
34.相应的,本技术实施例还提供一种电子设备,所述电子设备包括存储器和处理器;所述存储器存储有计算机程序,所述处理器用于运行所述存储器内的计算机程序,以执行本技术实施例任一提供的线程执行方法。
35.相应的,本技术实施例还提供一种存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现本技术实施例任一提供的线程执行方法。
36.本技术实施例可以接收针对当前线程的同步锁获取指令;基于同步锁获取指令,对同步锁进行检测,得到同步锁的状态信息;当检测到同步锁的状态信息为非空闲状态时,基于当前线程,在至少两个预设队列中筛选出目标队列,其中,至少两个预设队列中包括至少一个关键线程同步锁等待队列和至少一个非关键线程同步锁等待队列;将当前线程添加到目标队列中。通过本技术实施例可以在锁机制的情况下兼顾到线程的优先级,从而减少优先级高的线程被执行的时延,提高进程被执行的有效性。
附图说明
37.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
38.图1是本技术实施例提供的线程执行方法的场景示意图;
39.图2是本技术实施例提供的线程执行方法的流程示意图;
40.图3是本技术实施例提供的线程执行方法的又一流程示意图;
41.图4是本技术实施例提供的线程执行方法的又一场景示意图;
42.图5是本技术实施例提供的线程执行方法的又一流程示意图;
43.图6是本技术实施例提供的线程执行装置的结构示意图;
44.图7是本技术实施例提供的电子设备的结构示意图。
具体实施方式
45.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,然而,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
46.本技术实施例提出了一种线程执行方法,该线程执行方法可以由线程执行装置执行,该线程执行装置可以集成在电子设备中。其中,该电子设备可以包括终端以及服务器等中的至少一个。即该线程执行方法可以由终端执行,也可以由服务器执行。
47.其中,该终端可以包括个人电脑、平板电脑、智能电视、智能手机、智能家居、可穿戴电子设备、vr/ar设备、车载计算机等等。
48.其中,服务器可以为多个异构系统之间的互通服务器或者后台服务器,还可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、以及大数据和人工智能平台等基础云计算服务的云服务器等等。
49.在一实施例中,如图1所示,线程执行装置可以集成在终端或服务器等电子设备上,以实施本技术实施例提出的线程执行方法。具体地,电子设备可以接收针对当前线程的同步锁获取指令;基于同步锁获取指令,对同步锁进行检测,得到同步锁的状态信息;当检测到同步锁的状态信息为非空闲状态时,基于当前线程,在至少两个预设队列中筛选出目标队列,其中,至少两个预设队列中包括至少一个关键线程同步锁等待队列和至少一个非关键线程同步锁等待队列;将当前线程添加到目标队列中。
50.以下分别进行详细说明,需要说明的是,以下实施例的描述顺序不作为对实施例优选顺序的限定。
51.本技术实施例将从线程执行装置集成在电子设备的角度进行本技术实施例提出的线程执行方法进行描述。
52.如图2所示,提供了一种线程执行方法,具体流程包括:
53.101、接收针对当前线程的同步锁获取指令。
54.其中,线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一个进程中可以并发多个线程,每条线程并行执行不同的任务。
55.其中,当前线程可以包括线程执行装置中当前最新生成的线程。
56.在一实施例中,进程是表示资源分配的基本单位,又是调度运行的基本单位。例如,用户通过线程执行装置运行自己的程序,线程执行装置的操作系统可以创建一个进程,并为它分配资源,例如分配各种表格、内存空间、磁盘空间、i/o设备等。然后,可以把该进程放入进程的就绪队列。接下来,若进程调度程序选中了该线程,会为该线程分配中央处理器(central processing unit,cpu)以及其它有关资源,该进程才真正运行。所以,进程是系统中的并发执行的单位。
57.在一实施例中,线程是进程中执行运算的最小单位,亦即执行处理机调度的基本单位。如果把进程理解为在逻辑上操作系统所完成的任务,那么线程表示完成该任务的许多可能的子任务之一。例如,假设用户启动了一个窗口中的数据库应用程序,操作系统就将对数据库的调用表示为一个进程。假设用户要从数据库中产生一份工资单报表,并传到一个文件中,这是一个子任务;在产生工资单报表的过程中,用户又可以输入数据库查询请求,这又是一个子任务。这样,操作系统则把每一个请求――工资单报表和新输入的数据查询表示为数据库进程中的独立的线程。线程可以在处理器上独立调度执行,这样,在多处理器环境下就允许几个线程各自在单独处理器上进行。操作系统提供线程就是为了方便而有效地实现这种并发性。
58.在一实施例中,为了提高任务执行的效率,一个线程中可以并发出多个线程,每条线程并行执行不同的子任务,从而实现任务的目的。但是,当多个线程同时完成一个任务时,为了保证正确性,一个资源同时智能由同一个线程访问操作,而同步锁的作用便是限制资源,保证线程的安全性。
59.其中,同步锁可以是一个标记锁,其可以保证每个线程都能正常执行原子不可更改操作,并且同步监听对象/同步锁/同步监听器/互斥器。
60.在一实施例中,为了保证线程执行的安全性,在线程执行时,可以基于资源为线程分配同步锁,从而避免线程之间抢夺资源。因此,在当前线程生成的同时,线程执行装置还可以接收到针对当前线程的同步锁获取指令。
61.例如,假设用户启动了一个窗口中的数据库应用程序,操作系统就将对数据库的调用表示为一个进程。假设用户要从数据库中产生一份工资单报表,并传到一个文件中,此时,线程执行装置会生成一个针对用户产生一份工资单报表的线程,以及接收到针对该当前线程的同步锁获取指令。
62.102、基于同步锁获取指令,对同步锁进行检测,得到同步锁的状态信息。
63.其中,同步锁的状态信息可以说明同步锁当前是否被其他线程占用。例如,当同步锁的状态信息为空闲状态时,说明同步锁当前并没有被其他线程占用。又例如,当同步锁的状态信息为非空闲状态时,说明同步锁当前已经被其他线程占用。
64.在一实施例中,线程执行装置可以基于同步锁获取指令为当前线程分配同步锁。但是,当资源都被占用时,说明同步锁也被占用了,此时,说明当前线程不能被马上分配到同步锁,也不能马上被执行,需要进入等待队列中。因此,可以基于同步锁获取指令,对同步锁进行检测,得到同步锁的状态信息。
65.例如,当同步锁的状态信息是空闲状态时,则可以将同步锁分配给当前线程,以保证当前线程可以安全地被执行。
66.又例如,当同步锁的状态信息是非空闲状态时,可以基于当前线程,在至少两个预设队列中筛选出目标队列,其中,至少两个预设队列中包括至少一个关键线程同步锁等待队列和至少一个非关键线程同步锁等待队列。
67.103、当检测到同步锁的状态信息为非空闲状态时,基于当前线程,在至少两个预设队列中筛选出目标队列,其中,至少两个预设队列中包括至少一个关键线程同步锁等待队列和至少一个非关键线程同步锁等待队列。
68.在一实施例中,当检测到同步锁的状态信息为非空闲状态时,说明当前线程不能被马上执行,需要将当前线程添加到等待队列中等待执行。
69.其中,预设队列可以包括预先设置好的等待队列。
70.其中,目标对象可以包括存储当前线程的队列。
71.在一实施例中,由于不同的线程可能会具有不同的优先级。为了提高线程执行的有效性,一般会先执行优先级较高的线程,然后再执行优先级较低的线程。而在现有的锁机制中,并不会兼顾到线程的执行迫切程度。因此,在本技术实施例中,在现有的锁机制中开设出至少两个预设队列。其中,该至少两个预设队列中可以包括至少一个关键线程同步锁等待队列和至少一个非关键线程同步锁等待队列。
72.其中,关键线程同步锁等待队列可以用于存储执行迫切程度较高的线程。而非关键线程同步锁等待队列可以用于存储执行迫切程度较低的线程。
73.其中,当线程执行装置检测到有同步锁处于空闲状态时,线程执行装置可以首先从关键线程同步锁等待队列中筛选出待执行线程,并将空闲的同步锁分配给待执行线程。当关键线程同步锁等待队列中的线程都被执行完时,线程执行装置才会从非关键线程同步锁等待队列中选取出线程继续执行。
74.在一实施例中,可以通过为线程设置优先级,从而体现出线程被执行的迫切程度。例如当线程被执行的迫切程度较高时,可以为线程设置一个较高的优先级。而当线程被执行的迫切程度较低时,可以为线程设置一个较低的优先级。
75.其中,被执行的迫切程度较高的线程可以被称为关键线程。被执行的迫切程度较低的线程可以被称为普通线程。
76.因此,在基于当前线程,在至少两个预设队列中筛选出目标队列时,可以基于当线程的优先级信息,在至少两个预设队列中筛选出目标队列,其中,至少两个预设队列中包括至少一个关键线程同步锁等待队列和至少一个非关键线程同步锁等待队列。
77.例如,线程执行装置中设置了两个预设队列,其中一个预设队列是关键线程同步锁等待队列,另外一个预设对立是非关键线程同步锁等待队列。
78.当当前线程的优先级较高时,可以确定关键线程同步锁等待队列作为当前线程的目标队列。
79.而当当前线程的优先级较低时,可以确定非关键线程同步锁等待队列作为当前线程的目标队列。
80.104、将当前线程添加到目标队列中。
81.在一实施例中,确定了当前线程的目标队列之后,可以将当前线程添加到目标队
列中,以使得当前线程可以在相应的队列中等待被执行。
82.例如,当确定当前线程的目标队列是关键线程同步锁等待队列时,可以将当前线程添加到关键线程同步锁等待队列中。
83.又例如,当确定当前线程的目标队列是非关键线程同步锁等待队列时,可以将当前线程添加到非关键线程同步锁等待队列中。
84.其中,当线程执行装置检测到有同步锁处于空闲状态时,线程执行装置可以首先从关键线程同步锁等待队列中筛选出待执行线程,并将空闲的同步锁分配给待执行线程。当关键线程同步锁等待队列中的线程都被执行完时,线程执行装置才会从非关键线程同步锁等待队列中选取出线程继续执行。
85.本技术实施例提出了一种线程执行方法,该方法包括:接收针对当前线程的同步锁获取指令;基于同步锁获取指令,对同步锁进行检测,得到同步锁的状态信息;当检测到同步锁的状态信息为非空闲状态时,基于当前线程,在至少两个预设队列中筛选出目标队列,其中,至少两个预设队列中包括至少一个关键线程同步锁等待队列和至少一个非关键线程同步锁等待队列;将当前线程添加到目标队列中。在本技术实施例提出的方法中,为了解决现有的锁机制并不能兼顾到线程的执行迫切程度的问题,在现有的锁机制中开设出至少两个预设队列用于缓存暂时无法执行的线程。其中,该至少两个预设队列中包括至少一个关键线程同步锁等待队列和至少一个非关键线程同步锁等待队列。其中,关键线程同步锁等待队列可以用于存储执行迫切程度较高的线程,而非关键线程同步锁等待队列可以用于存储执行迫切程度较低的线程。通过关键线程同步锁等待队列和非关键线程同步锁等待队列,可以令线程执行装置在为线程分配同步锁时,可以考虑到线程的执行优先级,使得执行优先级较高的线程可以被较快地执行到,从而减少优先级高的线程被执行的时延,提高进程被执行的有效性。
86.根据上面实施例所描述的方法,以下将举例作进一步详细说明。
87.本技术实施例将以线程执行方法集成在服务器上为例来介绍本技术实施例方法。具体的,如图3所示,本技术实施例提出的线程执行方法的流程可以包括:
88.201、服务器接收针对当前线程的同步锁获取指令。
89.其中,当前线程可以包括服务器中当前最新生成的线程。
90.其中,同步锁获取指令可以包括令服务器为该当前线程分配同步锁的指令。
91.例如,假设用户启动了一个窗口中的数据库应用程序,服务器的操作系统就将对数据库的调用表示为一个进程。假设用户要从数据库中产生一份工资单报表,并传到一个文件中,此时,服务器会生成一个针对用户产生一份工资单报表的线程,以及接收到针对该当前线程的同步锁获取指令。
92.202、服务器基于同步锁获取指令,对同步锁进行检测,得到同步锁的状态信息。
93.其中,同步锁的状态信息可以说明同步锁当前是否被其他线程占用。例如,当同步锁的状态信息为空闲状态时,说明同步锁当前并没有被其他线程占用。又例如,当同步锁的状态信息为非空闲状态时,说明同步锁当前已经被其他线程占用。
94.在一实施例中,有多种方式可以对同步锁进行检测,得到同步锁的状态信息。
95.例如,服务器可以基于同步锁获取指令,为当前线程获取同步锁,并监听当前线程是否成功地获取到同步锁。若当前线程成功地获取到同步锁,说明同步锁的状态信息为空
闲状态。若当前线程没有成功地获取到同步锁,说明同步锁的状态信息为非空闲状态。具体的,步骤“基于同步锁获取指令,对同步锁进行检测,得到同步锁的状态信息”,可以包括:
96.基于同步锁获取指令,为当前线程获取同步锁,并启动对同步锁的监听,得到监听结果;
97.基于监听结果,生成同步锁的状态信息。
98.例如,服务器可以基于同步锁获取指令,为当前线程获取同步锁。其中,服务器在为当前线程获取同步锁的同时,当前线程还可以启动对同步锁的监听,监听服当前线程是否成功地获取到同步锁。
99.其中,当当前线程成功地获取到同步锁,说明同步锁的状态信息是空闲状态。而当当前线程并没有成功地获取到同步锁,说明同步锁的状态信息是非空闲状态。
100.此外,还可以对同步锁进行识别,得到同步锁的锁定标识,其中,该锁定标识用于说明同步锁是否被占用。然后,可以基于同步锁的说定标识确定同步锁的状态信息。
101.例如,当同步锁的锁定标识为同步锁被占用了,说明同步锁的状态信息是非空闲状态。又例如,当同步锁的锁定标识为同步锁未被占用,说明同步锁的状态信息是空闲状态。
102.203、当服务器检测到同步锁的状态信息为非空闲状态时,基于当前线程,在至少两个预设队列中筛选出目标队列,其中,至少两个预设队列中包括至少一个关键线程同步锁等待队列和至少一个非关键线程同步锁等待队列。
103.在一实施例中,当服务器检测到同步锁的状态信息为非空闲状态时,可以基于当前线程的优先级信息,在至少两个预设队列中筛选出目标队列。具体的,步骤“当检测到所述同步锁的状态信息为非空闲状态时,基于当前线程,在至少两个预设队列中筛选出目标队列”,可以包括:
104.当检测到同步锁的状态信息为非空闲状态时,识别当前线程的优先级信息;
105.基于当前线程的优先级信息,在至少两个预设队列中筛选出目标队列。
106.其中,优先级信息可以反映出线程被执行的迫切程度。例如,若线程的优先级越高,可以说明线程被执行的迫切程度越高。又例如,若线程的优先级越低,可以说明线程被执行的迫切程度越低。
107.其中,被执行的迫切程度较高的线程可以被称为关键线程。被执行的迫切程度较低的线程可以被称为普通线程。
108.其中,关键线程可以包括用户易感知到的任务。例如,优先级高的线程可以包括会显示屏中画面变化的任务,等等。例如,当用户打开一个文件时,会导致显示屏中画面的变化,此时,用户打开文件对应的线程可以是一个优先级较高的线程,等等。
109.在一实施例中,可以预先为服务器可以生成的任务和子任务都设置好优先级,从而使得任务对应的线程具有相应的优先级信息。此外,还可以预先设置好预设优先级条件,并通过该预设优先级条件判断每个线程的优先级高低。具体的,步骤“基于当前线程的优先级信息,在至少两个预设队列中筛选出目标队列”,可以包括:
110.将当前线程的优先级信息和预设优先级条件进行匹配;
111.当当前线程的优先级信息符合预设优先级条件时,确定关键线程同步锁等待队列为目标队列;
112.当当前线程的优先级信息不符合预设优先级条件时,确定非关键线程同步锁等待队列为目标队列。
113.例如,可以通过数据表示线程的优先级信息。例如,可以将线程的优先级信息划分为4个等级,分别为1、2、3和4。其中,可以令等级4的优先级最高,而等级1的优先级最低。此外,可以令预设优先级条件设置为一个优先级阈值。例如,可以将该优先级阈值设置为3。其中,当当前线程的优先级信息大于或等于3时,说明线程是优先级较高的线程,并确定关键线程同步锁等待队列为当前线程的目标队列。而当当前线程的优先级小于3时,说明线程是优先级较低的线程,并确定非关键线程同步锁等待队列为当前线程的目标队列。
114.204、服务器将当前线程添加到目标队列中。
115.在一实施例中,服务器确定了当前线程的目标队列之后,可以将当前线程添加到目标队列当中。
116.其中,当服务器检测到有同步锁处于空闲状态时,服务器可以首先从关键线程同步锁等待队列中筛选出待执行线程,并将空闲的同步锁分配给待执行线程。当关键线程同步锁等待队列中的线程都被执行完时,服务器才会从非关键线程同步锁等待队列中选取出线程继续执行。具体的,在步骤“将当前线程添加到目标队列中”之后,可以包括:
117.当检测到同步锁的状态信息为空闲状态时,对关键线程同步锁等待队列进行检测,得到关键线程同步锁等待队列中的线程数量;
118.基于线程数量,通过唤醒模块从关键线程同步锁等待队列中选取出待执行线程;
119.将同步锁添加给待执行线程。
120.在一实施例中,在将当前线程添加到目标队列之后,可以继续检测同步锁的状态信息。其中,当检测到同步锁的状态信息为空闲状态时,可以将同步锁分配给优先级较高的线程,使得优先级较高的线程可以先被执行。其中,由于优先级较高的线程都存在关键线程同步锁等待队列中,因此,可以对关键线程同步锁等待队列进行检测,得到关键线程同步锁等待队列中的线程数量,即判断关键线程同步锁等待队列中是否存在线程。具体的,步骤“基于线程数量,通过唤醒模块从关键线程同步锁等待队列中选取出待执行线程”,可以包括:
121.将线程数量和预设线程阈值进行比较;
122.当线程数量大于预设线程阈值时,通过唤醒模块从非关键线程同步锁等待队列中选取出待执行线程。
123.其中,预设线程阈值可以设置为0。例如,当关键线程同步锁等待队列中的线程数量大于0时,说明关键线程同步锁当中还有线程,因此可以通过唤醒模块从非关键线程同步锁等待队列中选取出待执行线程,并将空闲的同步锁添加给待执行线程,以使得该待执行线程可以安全地被执行。
124.又例如,当关键线程同步锁等待队列中的线程数量小于0时,说明关键线程同步锁当中已经没有线程了。此时,服务器便可以执行非关键线程同步锁等待队列中的线程。具体的,本技术实施例提出的方法还可以包括:
125.当线程数量小于或等于预设线程阈值时,通过唤醒模块从关键线程同步锁等待队列中选取出待执行线程。
126.在一实施例中,如图4所示,是本技术实施例提出的方法的系统场景图。其中,关键
线程识别模块上可以设置线程的优先级,并根据线程的优先级将线程放入到相应的队列中。例如,当当前线程是关键线程时,可以将当前线程放入到关键线程同步锁等待队列中。又例如,当当前线程是普通线程时,可以将当前线程放入到非关键线程同步锁等待队列中。
127.其中,当同步锁被释放后,唤醒模块可以优先选取同步锁等待队列内的线程获得同步锁。若关键线程同步锁等待队列内无线程,唤醒模块才根据非关键线程同步锁等待队列内先进先出的顺序取出线程。
128.在一实施例中,如图5所示,是本技术实施例提出的方法的一个完整的流程示意图。
129.例如,线程a已经获得了同步锁。当线程b(相当于当前线程)想要获得同步锁时,由于同步锁的状态信息是非空闲状态,所以可以判断线程b是否是关键线程。其中,如果线程b是关键线程,则将线程b放入关键线程同步锁等待队列,否则,会将线程b放入到非关键线程同步锁等待队列中。
130.当线程a结束运行并释放了同步锁之后,可以判断关键线程同步锁等待队列中是否有线程。如果关键线程同步锁等待队列中有线程,则唤醒模块可以从关键线程同步锁等待队列中按照先进先出的逻辑选择线程获得锁。例如,关键线程同步锁等待队列中包括线程c、线程d和线程a。其中,线程c是最先进入到关键线程同步锁等待队列中的,因此,可以将同步锁分配给线程c。如果关键线程同步锁等待队列中没有线程,则唤醒模块可以从非关键线程同步锁等待队列中按照先进先出的逻辑获取同步锁。
131.本技术实施例提出了一种线程执行方法,该方法包括:服务器接收针对当前线程的同步锁获取指令;服务器基于同步锁获取指令,对同步锁进行检测,得到同步锁的状态信息;当服务器检测到同步锁的状态信息为非空闲状态时,服务器基于当前线程,在至少两个预设队列中筛选出目标队列,其中,至少两个预设队列中包括至少一个关键线程同步锁等待队列和至少一个非关键线程同步锁等待队列;将当前线程添加到目标队列中。本技术实施例通过设置指定线程优先级,可以解决现有锁机制中,高优先级线程得不到及时唤醒从而影响时延的问题,从而减少优先级高的线程被执行的时延,提高进程被执行的有效性。
132.为了更好地实施本技术实施例提供的线程执行方法,在一实施例中还提供了一种线程执行装置,该线程执行装置可以集成于电子设备中。其中名词的含义与上述线程执行方法中相同,具体实现细节可以参考方法实施例中的说明。
133.在一实施例中,提供了一种线程执行装置,该线程执行装置具体可以集成在电子设备,如图6所示,该线程执行装置包括:接收单元301、检测单元302、筛选单元303和添加单元304,具体如下:
134.接收单元301,用于接收针对当前线程的同步锁获取指令;
135.检测单元302,用于基于所述同步锁获取指令,对同步锁进行检测,得到所述同步锁的状态信息;
136.筛选单元303,用于当检测到所述同步锁的状态信息为非空闲状态时,基于所述当前线程,在至少两个预设队列中筛选出目标队列,其中,所述至少两个预设队列中包括至少一个关键线程同步锁等待队列和至少一个非关键线程同步锁等待队列;
137.添加单元304,用于将所述当前线程添加到所述目标队列中。
138.在一实施例中,所述筛选单元303,可以包括:
139.识别子单元,用于当检测到所述同步锁的状态信息为非空闲状态时,识别所述当前线程的优先级信息;
140.筛选子单元,用于基于所述当前线程的优先级信息,在至少两个预设队列中筛选出目标队列。
141.在一实施例中,所述筛选子单元,可以包括:
142.匹配模块,用于将所述当前线程的优先级信息和预设优先级条件进行匹配;
143.第一确定模块,用于当所述当前线程的优先级信息符合所述预设优先级条件时,确定所述关键线程同步锁等待队列为所述目标队列;
144.第二确定模块,用于当所述当前线程的优先级信息不符合所述预设优先级条件时,确定所述非关键线程同步锁等待队列为所述目标队列。
145.在一实施例中,所述检测单元302,可以包括:
146.同步锁获取子单元,用于基于所述同步锁获取指令,为所述当前线程获取所述同步锁,并启动对所述同步锁的监听,得到监听结果;
147.信息生成子单元,用于基于所述监听结果,生成所述同步锁的状态信息。
148.在一实施例中,所述线程执行装置,还可以包括:
149.队列检测单元,用于当检测到所述同步锁的状态信息为空闲状态时,对所述关键线程同步锁等待队列进行检测,得到所述关键线程同步锁等待队列中的线程数量;
150.选取单元,用于基于所述线程数量,通过唤醒模块从所述关键线程同步锁等待队列中选取出待执行线程;
151.锁添加单元,用于将所述同步锁添加给所述待执行线程。
152.在一实施例中,所述选取单元,可以包括:
153.比较子单元,用于将所述线程数量和预设线程阈值进行比较;
154.第一选取子单元,用于当所述线程数量大于所述预设线程阈值时,通过唤醒模块从所述非关键线程同步锁等待队列中选取出待执行线程。
155.在一实施例中,所述选取单元,还可以包括:
156.第二选取子单元,用于当所述线程数量小于或等于所述预设线程阈值时,通过唤醒模块从所述关键线程同步锁等待队列中选取出待执行线程。
157.具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元的具体实施可参见前面的方法实施例,在此不再赘述。
158.通过上述的线程执行装置在锁机制的情况下兼顾到线程的优先级,从而减少优先级高的线程被执行的时延,提高进程被执行的有效性。
159.本技术实施例还提供一种电子设备,该电子设备可以包括终端或服务器;比如电子设备可以为服务器,如线程执行功能器等。如图7所示,其示出了本技术实施例所涉及的终端的结构示意图,具体来讲:
160.该电子设备可以包括一个或者一个以上处理核心的处理器401、一个或一个以上计算机可读存储介质的存储器402、电源403和输入单元404等部件。本领域技术人员可以理解,图7中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
161.处理器401是该电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器402内的软件程序和/或模块,以及调用存储在存储器402内的数据,执行电子设备的各种服务和处理数据,从而对电子设备进行整体监控。可选的,处理器401可包括一个或多个处理核心;优选的,处理器401可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户页面和应用程序等,调制解调处理器主要处理无线通讯。可以理解的是,上述调制解调处理器也可以不集成到处理器401中。
162.存储器402可用于存储软件程序以及模块,处理器401通过运行存储在存储器402的软件程序以及模块,从而执行各种服务应用以及数据处理。存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个服务所需的应用程序(比如声音播放服务、图像播放服务等)等;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器402还可以包括存储器控制器,以提供处理器401对存储器402的访问。
163.电子设备还包括给各个部件供电的电源403,优选的,电源403可以通过电源管理系统与处理器401逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等服务。电源403还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
164.该电子设备还可包括输入单元404,该输入单元404可用于接收输入的数字或字符信息,以及产生与用户设置以及服务控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
165.尽管未示出,电子设备还可以包括显示单元等,在此不再赘述。具体在本实施例中,电子设备中的处理器401会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器402中,并由处理器401来运行存储在存储器402中的应用程序,从而实现各种服务,如下:
166.接收针对当前线程的同步锁获取指令;
167.基于所述同步锁获取指令,对同步锁进行检测,得到所述同步锁的状态信息;
168.当检测到所述同步锁的状态信息为非空闲状态时,基于所述当前线程,在至少两个预设队列中筛选出目标队列,其中,所述至少两个预设队列中包括至少一个关键线程同步锁等待队列和至少一个非关键线程同步锁等待队列;
169.将所述当前线程添加到所述目标队列中。
170.以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
171.根据本技术的一个方面,提供了一种计算机程序应用或计算机程序,该计算机程序应用或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例中各种可选实现方式中提供的方法。
172.本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过计算机程序来完成,或通过计算机程序控制相关的硬件来完成,该计算机程序可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
173.为此,本技术实施例还提供一种存储介质,其中存储有计算机程序,该计算机程序能够被处理器进行加载,以执行本技术实施例所提供的任一种线程执行方法中的步骤。例如,该计算机程序可以执行如下步骤:
174.接收针对当前线程的同步锁获取指令;
175.基于所述同步锁获取指令,对同步锁进行检测,得到所述同步锁的状态信息;
176.当检测到所述同步锁的状态信息为非空闲状态时,基于所述当前线程,在至少两个预设队列中筛选出目标队列,其中,所述至少两个预设队列中包括至少一个关键线程同步锁等待队列和至少一个非关键线程同步锁等待队列;
177.将所述当前线程添加到所述目标队列中。
178.以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
179.由于该存储介质中所存储的计算机程序,可以执行本技术实施例所提供的任一种线程执行方法中的步骤,因此,可以实现本技术实施例所提供的任一种线程执行方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
180.以上对本技术实施例所提供的一种线程执行方法、装置、电子设备和存储介质进行了详细介绍,本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想;同时,对于本领域的技术人员,依据本技术的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本技术的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1