CN117149391A - 线程管理方法、装置及电子设备 - Google Patents

线程管理方法、装置及电子设备 Download PDF

Info

Publication number
CN117149391A
CN117149391A CN202311194423.7A CN202311194423A CN117149391A CN 117149391 A CN117149391 A CN 117149391A CN 202311194423 A CN202311194423 A CN 202311194423A CN 117149391 A CN117149391 A CN 117149391A
Authority
CN
China
Prior art keywords
thread
identifier
code
queue
electronic device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202311194423.7A
Other languages
English (en)
Inventor
徐自武
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Vivo Mobile Communication Co Ltd
Original Assignee
Vivo Mobile Communication Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Vivo Mobile Communication Co Ltd filed Critical Vivo Mobile Communication Co Ltd
Priority to CN202311194423.7A priority Critical patent/CN117149391A/zh
Publication of CN117149391A publication Critical patent/CN117149391A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/482Application
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/483Multiproc

Abstract

本申请公开了一种线程管理方法、装置及电子设备,属于终端技术领域。其中,本申请实施例提供的线程管理方法包括:在电子设备的第一线程处于运行状态的情况下,获取至少一个第一对应关系,该第一对应关系为第一代码标识和第一线程标识之间的对应关系,该第一代码标识用于指示第一线程所需执行的第一代码,该第一线程标识用于指示持有第一互斥锁的线程,该第一互斥锁用于访问运行第一线程所需的第一共享资源;在通过第一线程执行至少一个第一代码中的第二代码的情况下,根据至少一个第一对应关系,确定与第二代码标识对应的第二线程标识,该第二代码标识为与第二代码对应的代码标识;提高第二线程标识指示的第二线程的运行速度。

Description

线程管理方法、装置及电子设备
技术领域
本申请属于终端技术领域,具体涉及一种线程管理方法、装置及电子设备。
背景技术
通常,电子设备可以通过中央处理器(Central ProcessingUnit,CPU)运行某个任务相关的进程,以使得该进程的各个线程可以各自执行对应的代码,从而使得电子设备可以执行该某个任务。在此过程中,若某个线程执行对应的代码时所需的共享资源的互斥锁被其他线程持有,则电子设备可以控制该某个线程处于阻塞状态,并在其他线程释放该互斥锁的情况下,电子设备可以唤醒该某个线程,以使得该某个线程可以持有该互斥锁,并继续执行对应的代码,从而电子设备可以继续执行某个任务。
但是,由于可能会出现上述其他线程需要较长时间才可以释放上述互斥锁的情况,此时上述某个线程可能会较长时间处于阻塞状态,这样会导致电子设备较长时间无法运行上述某个任务相关的进程,因此,可能导致电子设备较长时间无法执行上述某个任务,如此,可能会导致电子设备出现卡顿的现象。
发明内容
本申请实施例的目的是提供一种线程管理方法、装置及电子设备,能够减少电子设备出现卡顿的现象。
第一方面,本申请实施例提供了一种线程管理方法,该方法包括:在电子设备的第一线程处于运行状态的情况下,获取至少一个第一对应关系,该第一对应关系为第一代码标识和第一线程标识之间的对应关系,该第一代码标识用于指示第一线程所需执行的第一代码,该第一线程标识用于指示持有第一互斥锁的线程,该第一互斥锁用于访问第一共享资源,该第一共享资源为运行第一线程所需的共享资源;在通过第一线程执行至少一个第一代码中的第二代码的情况下,根据至少一个第一对应关系,确定与第二代码标识对应的第二线程标识,该第二代码标识为与第二代码对应的代码标识;提高第二线程标识指示的第二线程的运行速度。
第二方面,本申请实施例提供了一种线程管理装置,该线程管理装置包括:获取模块和处理模块。其中,获取模块,用于在线程管理装置的第一线程处于运行状态的情况下,获取至少一个第一对应关系,该第一对应关系为第一代码标识和第一线程标识之间的对应关系,该第一代码标识用于指示第一线程所需执行的第一代码,该第一线程标识用于指示持有第一互斥锁的线程,该第一互斥锁用于访问第一共享资源,该第一共享资源为运行第一线程所需的共享资源。处理模块,用于在通过第一线程执行至少一个第一代码中的第二代码的情况下,根据获取模块获取的至少一个第一对应关系,确定与第二代码标识对应的第二线程标识,该第二代码标识为与第二代码对应的代码标识;并提高第二线程标识指示的第二线程的运行速度。
第三方面,本申请实施例提供了一种电子设备,该电子设备包括处理器和存储器,所述存储器存储可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如第一方面所述的方法的步骤。
第四方面,本申请实施例提供了一种可读存储介质,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如第一方面所述的方法的步骤。
第五方面,本申请实施例提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现如第一方面所述的方法的步骤。
第六方面,本申请实施例提供一种计算机程序产品,该程序产品被存储在存储介质中,该程序产品被至少一个处理器执行以实现如第一方面所述的方法的步骤。
在本申请实施例中,电子设备在电子设备的第一线程处于运行状态的情况下,可以获取至少一个第一对应关系,该第一对应关系为:用于指示第一线程所需执行的第一代码的第一代码标识和持有第一互斥锁的线程的第一线程标识之间的对应关系,该第一互斥锁用于访问第一共享资源,该第一共享资源为运行第一线程所需的共享资源,并在通过第一线程执行至少一个第一代码中的第二代码的情况下,根据至少一个第一对应关系,确定与该第二代码的第二代码标识对应的第二线程标识,从而电子设备可以提高该第二线程标识指示的第二线程的运行速度。由于在第一线程处于运行状态的情况下,电子设备可以获取至少一个第一对应关系,该第一对应关系是第一线程所需执行的第一代码的代码标识和持有运行第一线程所需的第一互斥锁的线程的线程标识的对应关系,这样在通过第一线程执行第二代码的情况下,电子设备可以直接根据该至少一个第一对应关系,确定出持有执行第二代码时所需的第一互斥锁的第二线程的第二线程标识,并直接提高该第二线程的运行速度,因此,可以减少第二线程持有执行第二代码时所需的第一互斥锁的时长,即可以使得第二线程快速地释放执行第二代码时所需的第一互斥锁,从而使得第一线程可以快速地执行第二代码,进而使得电子设备可以快速地运行第一线程所属的进程,以快速地执行该进程相关的任务,如此,可以减少电子设备出现卡顿的现象。
附图说明
图1是本申请实施例提供的一种线程管理方法的流程示意图之一;
图2是本申请实施例提供的一种线程管理方法的流程示意图之二;
图3是本申请实施例提供的一种线程管理方法中第一线程的线程锁队列的示意图之一;
图4是本申请实施例提供的一种线程管理方法中第一线程的线程锁队列的示意图之二;
图5是本申请实施例提供的一种线程管理方法中第一线程的线程锁队列的示意图之三;
图6是本申请实施例提供的一种线程管理方法的流程示意图之三;
图7是本申请实施例提供的一种线程管理方法的流程示意图之四;
图8是本申请实施例提供的一种线程管理装置的结构示意图;
图9是本申请实施例提供的一种电子设备的硬件结构示意图之一;
图10是本申请实施例提供的一种电子设备的硬件结构示意图之二。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一线程可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
本申请的说明书和权利要求书中的术语“至少一个(项)”、“至少之一”等指其包含对象中的任意一个、任意两个或两个以上的组合。例如,a、b、c中的至少一个(项),可以表示:“a”、“b”、“c”、“a和b”、“a和c”、“b和c”以及“a、b和c”,其中a,b,c可以是单个,也可以是多个。同理,“至少两个(项)”是指两个或两个以上,其表达的含义与“至少一个(项)”类似。
下面结合附图,通过具体的实施例及其应用场景对本申请实施例提供的线程管理方法、装置及电子设备进行详细地说明。
本申请实施例提供的线程管理方法,执行主体可以为线程管理装置,或者电子设备,或者电子设备中的功能模块或实体。本申请实施例中以电子设备执行线程管理方法为例,说明本申请实施例提供的线程管理方法的。
图1示出了本申请实施例提供的一种线程管理方法的流程示意图。如图1所示,本申请实施例提供的一种线程管理方法可以包括下述的步骤101至步骤103。
步骤101、在电子设备的第一线程处于运行状态的情况下,电子设备获取至少一个第一对应关系。
在本申请的一些实施例中,在电子设备执行第一任务的情况下,电子设备可以控制第一任务相关的第一进程中的多个线程处于可运行runnable状态,该多个线程中包括第一线程,并为每个线程分配CPU时间片,以及将该多个线程加入至CPU运行线程的队列中,从而电子设备可以按照该队列中的队列顺序和每个线程的CPU时间片,通过CPU依次运行每个线程,并在通过CPU运行至第一线程的情况下,电子设备可以控制第一线程处于运行running状态,从而电子设备可以获取至少一个第一对应关系。
在本申请的一些实施例中,上述第一线程可以为上述多个线程中运行优先级大于或等于预定优先级的线程。可以理解,第一线程可以为上述多个线程中的高运行优先级的线程。
其中,该第一线程可以包括以下至少一项:主线程、用户界面(User Interface,UI)线程、渲染线程、Binder线程、后台服务线程、AsyncTack线程等。
本申请实施例中,上述第一对应关系为第一代码标识和第一线程标识之间的对应关系,该第一代码标识用于指示第一线程所需执行的第一代码,该第一线程标识用于指示持有第一互斥锁的线程,该第一互斥锁用于访问第一共享资源,该第一共享资源为运行第一线程所需的共享资源。
在本申请的一些实施例中,上述第一代码标识可以为以下任一项:代码名称、代码链接等。上述第一线程标识可以为以下任一项:线程名称、线程序号等。
可以理解,针对至少一个第一对应关系中的每个第一对应关系,一个第一对应关系为:第一线程所需执行的一个第一代码的代码标识,和持有执行该一个一个代码时所需访问的一个第一共享资源的第一互斥锁的一个线程的一个线程标识之间的对应关系。一个第一对应关系可以指示:第一线程执行该一个第一代码时所需的第一互斥锁,被该一个线程所持有。
在本申请的一些实施例中,上述第一共享资源可以为上述第一进程对应的共享资源中的至少一个共享资源。该第一共享资源可以包括以下至少一项:内存、代码段等。
本申请实施例中,上述第一互斥锁为:访问或操作第一共享资源的互斥锁。可以理解,在线程只有在持有第一互斥锁的情况下,才可以访问或操作第一共享资源。
在本申请的一些实施例中,上述第一互斥锁的数量可以为至少一个。其中,在执行每个第一代码时所需的第一互斥锁均不同的情况下,第一互斥锁的数量可以为第一代码的数量,在执行至少一个第一代码时所需的第一互斥锁至少部分相同的情况下,第一互斥锁的数量可以小于第一代码的数量。
在本申请的一些实施例中,上述至少一个第一对应关系可以为电子设备中预配置的对应关系,或电子设备预先建立的对应关系。
在本申请的一些实施例中,在电子设备控制第一进程中的多个线程处于runnable状态的情况下,电子设备可以获取第一进程对应的第一配置文件,并在第一线程处于运行状态的情况下,从该第一配置文件中获取第一线程对应的至少一个第一对应关系。
可选地,第一配置文件中包括第一进程中的至少部分线程中的每个线程对应的至少一个对应关系,每个对应关系为:一个线程所需执行的代码的代码标识,和持有执行该代码时所需的第一共享资源的互斥锁的线程的线程标识。
需要说明的是,针对上述至少一个对应关系的说明,可以参考上述至少一个第一对应关系的具体描述,本申请实施例在此不予赘述。可以理解,上述至少一个对应关系中包括至少一个第一对应关系。
下面将以电子设备建立第一对应关系为例,举例说明电子设备建立上述对应关系的具体方案。
在本申请的一些实施例中,结合图1,如图2所示,在上述步骤101之前,本申请实施例提供的线程管理方法还可以包括下述的步骤201和步骤202。
步骤201、在第一线程处于阻塞状态的情况下,若电子设备通过第三线程唤醒第一线程,则电子设备获取第三线程的第四线程标识和第三代码标识。
本申请实施例中,上述第三代码标识用于指示:在第一线程处于阻塞状态之前最后执行的第一代码。
在本申请的一些实施例中,上述第四线程标识可以为以下任一项:线程名称、线程序号等。上述第三代码标识可以为以下任一项:代码名称、代码链接等。
在本申请的一些实施例中,电子设备可以先针对第一线程建立线程锁队列,并在第一线程处于运行状态的情况下,电子设备可以通过操作系统在该线程锁队列中记录第一线程获取互斥锁的相关信息,从而在第一线程处于阻塞状态、且电子设备通过第三线程唤醒第一线程的情况下,电子设备可以从该线程锁队列中获取第四线程标识和第三代码标识。
其中,该相关信息可以包括以下至少一项:成功获取的互斥锁的名称、失败获取互斥锁时持有该互斥锁的线程的线程标识、预设数值、唤醒第一线程的线程的线程标识、第一线程处于阻塞状态之前最后执行的代码的代码标识。
可选地,在第一线程获取互斥锁成功的情况下,电子设备可以通过操作系统在线程锁队列中记录该互斥锁的名称。并且地,在第一线程获取互斥锁失败的情况下,电子设备可以通过操作系统在线程锁队列中记录持有该互斥锁的线程的线程标识,或可以通过操作系统在线程锁队列中记录上述预设数值。并且地,在第一线程被其他线程唤醒的情况下,电子设备可以通过操作系统在线程锁队列中该其他线程的线程标识和在第一线程处于阻塞状态之前最后执行的代码的代码标识。
举例说明,假设第一线程T1已获取了互斥锁1和互斥锁2,且第一线程获取互斥锁3失败,线程T2持有该互斥锁3,如图3所示,则第一线程T1对应的线程锁队列中包括互斥锁1的名称锁结构Lock_P1和互斥锁2的名称Lock_P2,且电子设备可以通过操作系统,在第一线程T1对应的线程锁队列的队尾记录持有互斥锁3的线程的线程标识,例如线程号Owner_T2。
举例说明,假设第一线程T1已获取了互斥锁1,且第一线程T1持有互斥锁1之后获取互斥锁2失败,以及,第一线程T1处于阻塞状态,如图4所示,则第一线程T1对应的线程锁队列中包括互斥锁3的名称Lock_P3,且电子设备可以通过操作系统,在第一线程T1对应的线程锁队列的队尾记录预设数值,例如“0”数值。
举例说明,假设在第一线程T1对应的线程锁队列的队尾记录“0”数值之后,持有互斥锁2的线程T3释放互斥锁2,并唤醒第一线程T1,结合图4,如图5所示,第一线程T1对应的线程锁队列中包括互斥锁3的名称Lock_P3和“0”数值,且电子设备可以通过操作系统,在第一线程T1对应的线程锁队列的队尾记录持有互斥锁2的线程的线程标识,和在第一线程处于阻塞状态之前最后执行的代码的代码标识,例如线程号Owner_T3和Method 1。
本申请实施例中,若电子设备通过第三线程唤醒第一线程,则可以认为第一线程在运行处于阻塞状态之前最后运行的代码时,所需的共享资源的互斥锁是由第三线程持有的,因此,电子设备可以获取该第三线程的第四线程标识和处于阻塞状态之前最后运行的代码的第三代码标识。
步骤202、电子设备根据第四线程标识和第三代码标识,确定一个第一对应关系。
在本申请的一些实施例中,电子设备可以直接建立第四线程标识和第三代码标识之间的对应关系,得到一个第一对应关系。
可以理解,电子设备可以重复执行上述步骤201和步骤202,以得到上述实施例中的至少一个第一对应关系。
在本申请的一些实施例中,电子设备可以将至少一个第一对应关系存储于上述第一配置文件中,以便于电子设备后续调用。
如此可知,由于电子设备可以在第一线程在执行某个第一代码因未获取到某个互斥锁而处于阻塞状态、且第三线程唤醒第一线程的情况下,确定第三线程持有该某个互斥锁,并建立该第三线程的第四线程标识和该某个代码的第三代码标识之间的对应关系,这样在电子设备后续执行该某个代码时,电子设备可以直接根据该对应关系,准确地确定持有该某个互斥锁的第三线程,以对该第三线程进行控制,因此,可以避免第一线程较长时间处于阻塞状态的情况。
可以理解,针对第一配置文件中包括第一进程中的至少部分线程中,除第一线程外的任一个线程,电子设备均可以采用上述步骤201和步骤202,得到该任一个线程对应的至少一个对应关系,并将该任一个线程对应的至少一个对应关系上述第一配置文件中,以便于电子设备后续调用。
步骤102、在电子设备通过第一线程执行至少一个第一代码中的第二代码的情况下,电子设备根据至少一个第一对应关系,确定与第二代码标识对应的第二线程标识。
本申请实施例中,上述第二代码标识为与第二代码对应的代码标识。可以理解,第二代码标识用于指示第二代码。
在本申请的一些实施例中,上述第二代码可以为第一线程所需执行的第一代码中的任一个第一代码。
在本申请的一些实施例中,电子设备可以从至少一个第一对应关系中的至少一个第一代码标识中,确定与第二代码标识相同的一个第一代码标识,并将该一个第一代码标识对应的一个第一线程标识,确定为第二线程标识。
可以理解,该第二线程标识指示的线程,即为持有第一线程执行第二代码时所需访问的一个第一共享资源的第一互斥锁的线程,也即为在第一线程执行第二代码时可能卡住第一线程的线程。
步骤103、电子设备提高第二线程标识指示的第二线程的运行速度。
在本申请的一些实施例中,上述第二线程的运行优先级可以高于第一线程的运行优先级,或等于第一线程的运行优先级,或小于第一线程的运行优先级。
其中,该第二线程可以包括以下至少一项:主线程、UI线程、渲染线程、Binder线程、后台服务线程、AsyncTack线程等。
在本申请的一些实施例中,电子设备可以确定第二线程所依赖资源的资源类型,并为第二线程分配该资源类型的系统资源,从而提高第二线程的运行速度。
示例性地,假设第二线程所依赖资源的资源类型为CPU资源类型,则电子设备可以将第二线程调度至CPU的大核或超大核上运行第二线程,并提高第二线程调度至的CPU核的工作频率,以为第二线程分配CPU资源类型的系统资源,从而提高第二线程的运行速度。
又示例性地,假设第二线程所依赖资源的资源类型为内存资源类型,则电子设备可以加大该第二线程的内存局部缓存区,以减少内存分配开销,以为第二线程分配内存资源类型的系统资源,从而提高第二线程的运行速度。
可以理解,若电子设备提高第二线程的运行速度,则第二线程可以快速地对对应的第一共享资源进行访问或操作,并快速地释放执行第二代码时所需的第一互斥锁,从而可以避免第一线程执行第二代码时,因无法获取执行第二代码所需的第一互斥锁,而导致第一线程长时间处于阻塞状态的情况。
当然,可能会出现第二线程被其他线程卡住,而无法释放执行第二代码时所需的第一共享资源的第一互斥锁的情况,此时电子设备还可以确定持有第二线程所需的共享资源的互斥锁的线程,并再次提高该线程的运行速度,以下将举例说明。
在本申请的一些实施例中,结合图1,如图6所示,在上述步骤102之后,本申请实施例中提供的线程管理方法还可以包括下述的步骤301至步骤303。
步骤301、电子设备获取至少一个第二对应关系。
需要说明的是,针对上述步骤301和步骤103的执行顺序,本申请实施例在此不作限定。在一种示例中,电子设备可以先执行步骤301,再执行步骤103;在另一种示例中,电子设备可以先执行步骤103,再执行步骤301;在又一种示例中,电子设备可以在执行步骤301的同时,执行步骤103。图6中是以电子设备先执行步骤301,再执行步骤103进行示意的。
本申请实施例中,上述第二对应关系为第四代码标识和第六线程标识之间的对应关系,该第四代码标识用于指示第二线程所需执行的第三代码,该第六线程标识用于指示持有第二互斥锁的线程,该第二互斥锁用于访问第二共享资源,该第二共享资源为运行第二线程所需的共享资源。
在本申请的一些实施例中,上述至少一个第二对应关系可以为电子设备中预配置的对应关系,或电子设备预先建立的对应关系。
需要说明的是,针对电子设备建立至少一个第二对应关系的说明,可以参考上述实施例中电子设备建立至少一个第一对应关系的具体描述,本申请实施例在此不再赘述。
在本申请的一些实施例中,电子设备可以从第一配置文件中获取至少一个第二对应关系。
步骤302、电子设备根据至少一个第二对应关系,确定与第二线程执行的至少一个第三代码中的第四代码的第五代码标识对应的第七线程标识。
在本申请的一些实施例中,上述第四代码可以为第二线程当前执行的第三代码。
在本申请的一些实施例中,电子设备可以从至少一个第二对应关系中的至少一个第四代码标识中,确定与第五代码标识相同的一个第四代码标识,并将该一个第四代码标识对应的一个第六线程标识,确定为第七线程标识。
可以理解,该第七线程标识指示的线程,即为持有第二线程执行第四代码时所需的第二共享资源的第二互斥锁的线程,也即为在第二线程执行第四代码时可能卡住第二线程的线程。
步骤303、电子设备提高第七线程标识指示的第五线程的运行速度。
在本申请的一些实施例中,电子设备可以确定第五线程所依赖资源的资源类型,并为第五线程分配该资源类型的系统资源,从而提高第五线程的运行速度。
需要说明的是,针对电子设备为第五线程分配所依赖资源的资源类型的系统资源的说明,可以参考上述实施例中电子设备为第二线程分配所依赖资源的资源类型的系统资源的具体描述,本申请实施例在此不再赘述。
如此可知,由于电子设备可以获取至少一个第二对应关系,该第二对应关系是第二线程所需执行的第三代码的代码标识和持有运行第二线程所需第二互斥锁的线程的线程标识的对应关系,这样电子设备可以直接根据该至少一个第二对应关系,确定出持有执行第三代码时所需的第二互斥锁的第五线程的第七线程标识,并直接提高该第五线程的运行速度,因此,可以减少第五线程持有执行第四代码时所需的第二互斥锁的时长,即可以使得第五线程快速地释放执行第四代码时所需的第二互斥锁,从而使得第二线程可以快速地执行第四代码,以快速地释放执行第二代码时所需的第一互斥锁,进而使得电子设备可以快速地运行第一线程所属的进程,以快速地执行该进程相关的任务,如此,可以减少电子设备出现卡顿的现象。
本申请实施例提供一种线程管理方法,电子设备在电子设备的第一线程处于运行状态的情况下,可以获取至少一个第一对应关系,该第一对应关系为:用于指示第一线程所需执行的第一代码的第一代码标识和持有第一互斥锁的线程的第一线程标识之间的对应关系,该第一互斥锁用于访问第一共享资源,该第一共享资源为运行第一线程所需的共享资源,并在通过第一线程执行至少一个第一代码中的第二代码的情况下,根据至少一个第一对应关系,确定与该第二代码的第二代码标识对应的第二线程标识,从而电子设备可以提高该第二线程标识指示的第二线程的运行速度。由于在第一线程处于运行状态的情况下,电子设备可以获取至少一个第一对应关系,该第一对应关系是第一线程所需执行的第一代码的代码标识和持有运行第一线程所需的第一互斥锁的线程的线程标识的对应关系,这样在通过第一线程执行第二代码的情况下,电子设备可以直接根据该至少一个第一对应关系,确定出持有执行第二代码时所需的第一互斥锁的第二线程的第二线程标识,并直接提高该第二线程的运行速度,因此,可以减少第二线程持有执行第二代码时所需的第一互斥锁的时长,即可以使得第二线程快速地释放执行第二代码时所需的第一互斥锁,从而使得第一线程可以快速地执行第二代码,进而使得电子设备可以快速地运行第一线程所属的进程,以快速地执行该进程相关的任务,如此,可以减少电子设备出现卡顿的现象。
当然,在本申请实施例中,由于电子设备每次切换线程所处的状态的过程会消耗大量的系统资源,因此为了节省系统资源,电子设备还可以减少切换线程所处的状态的次数,以下将举例说明。
在本申请的一些实施例中,结合图1,如图7所示,在上述步骤102之后,本申请实施例提供的线程管理方法还可以包括下述的步骤401。
步骤401、在电子设备通过第一线程执行第二代码的情况下,若第一线程获取第一互斥锁失败,则电子设备更新第三线程标识在第一调度队列中的队列顺序。
需要说明的是,针对上述步骤401和步骤103的执行顺序,本申请实施例在此不作限定。在一种示例中,电子设备可以先执行步骤401,再执行步骤103;在另一种示例中,电子设备可以先执行步骤103,再执行步骤401;在又一种示例中,电子设备可以在执行步骤401的同时,执行步骤103。图7中是以电子设备先执行步骤103,再执行步骤401进行示意的。
本申请实施例中,上述第三线程标识为与第一线程对应的线程标识,上述第一调度队列为通过CPU运行线程的队列。
可以理解,第三线程标识为第一线程的线程标识,该第三线程标识用于指示第一线程。
在本申请的一些实施例中,电子设备可以将第三线程标识在第一调度队列中的队列顺序,调整为除第一个外的任一个队列顺序。
在本申请的一些实施例中,上述步骤401具体可以通过下述的步骤401a实现。
步骤401a、在电子设备通过第一线程执行第二代码的情况下,若第一线程获取第一互斥锁失败,则电子设备将第三线程标识在第一调度队列中的队列顺序,调整为最后第N个。
本申请实施例中,N为正整数。
在本申请的一些实施例中,N具体可以为1。即,电子设备可以将第三线程标识在第一调度队列中的队列顺序,调整为最后一个。
如此可知,由于电子设备可以将第三线程标识在第一调度队列中的队列顺序,调整为最后第N个,这样可以增加CPU再次运行第一线程的时间间隔的时长,因此,可以有较多时间等待执行第二代码所需的第一互斥锁,从而可以减少第一线程再次获取执行第二代码所需的第一互斥锁失败的概率。
在相关技术中,若第一线程获取第一互斥锁失败,则电子设备会将第一线程所处的状态从运行状态切换为阻塞状态,并将第三线程标识加入执行第二代码所需的第一互斥锁的等待队列中,但是电子设备将第一线程所处的状态从运行状态切换为阻塞状态会消耗大量的系统资源。因此,在本申请实施例中,在电子设备通过第一线程执行第二代码的情况下,若第一线程获取执行第二代码所需的第一互斥锁失败,则电子设备并不会将第一线程所处的状态从运行状态切换为阻塞状态,而是更新第三线程标识在第一调度队列中的队列顺序,以在CPU运行第一调度队列中位于更新后的第三线程标识之前的线程标识指示的线程的过程中,等待第一线程执行第二代码所需的第一互斥锁,从而可以在减少切换第一线程所处的状态的次数。
如此可知,由于电子设备在通过第一线程执行第二代码时,在第一线程获取执行第二代码所需的第一互斥锁失败的情况下,更新第三线程标识在第一调度队列中的队列顺序,以等待该第一互斥锁,而无需将第一线程所处的状态从运行状态切换为阻塞状态,因此,可以减少切换第一线程所处的状态的次数,如此,可以节省系统资源。
并且地,由于在电子设备更新第三线程标识在第一调度队列中的队列顺序之后CPU再次运行第一线程的时间间隔的时长,小于电子设备切换第一线程所处的状态所需的时长,因此,在电子设备更新第三线程标识在第一调度队列中的队列顺序之后,第一线程可以快速地再次获取执行第二代码所需的第一互斥锁,从而可以提高获取到执行第二代码所需的第一互斥锁的概率。
在本申请的一些实施例中,在上述步骤401之后,本申请实施例提供的线程管理方法还可以包括下述的步骤402或步骤403。
步骤402、在从第一时刻起的第一时间段内,若第一线程获取第一互斥锁失败,则电子设备再次更新第三线程标识在第一调度队列中的队列顺序。
本申请实施例中,上述第一时刻为:上一次更新第三线程标识在第一调度队列中的队列顺序的时刻。
可以理解,第一时刻为:电子设备第一次更新第三线程标识在第一调度队列中的队列顺序的时刻。
在本申请的一些实施例中,在第一时刻之后,CPU可以按照更新后的第一调度队列的队列顺序运行线程,并在运行至第一线程的情况下,第一线程可以再次获取执行第二代码所需的第一互斥锁,从而在第一线程再次获取执行第二代码所需的第一互斥锁失败的情况下,电子设备可以再次更新第三线程标识在第一调度队列中的队列顺序。
在本申请的一些实施例中,上述第一时间段的时长与第一线程的运行优先级正相关。
示例性地,假设第一线程的运行优先级为优先级1,则第一时间段的时长可以为2毫秒(ms),或者,第一线程的运行优先级为优先级2,则第一时间段的时长可以为1毫秒;其中,该优先级1高于优先级2。
如此可知,由于电子设备可以在第一时间段内,在第一线程再次获取执行第二代码所需的第一互斥锁失败的情况下,电子设备可以再次更新第三线程标识在第一调度队列中的队列顺序,因此,可以减少切换第一线程所处的状态的次数,如此,可以节省系统资源。
步骤403、在从第一时刻起的第一时间段外,若第一线程获取第一互斥锁失败,则电子设备控制第一线程处于阻塞状态,并将第三线程标识加入第一等待队列。
本申请实施例中,上述第一等待队列为等待第一互斥锁的队列。可以理解,该第一等待队列可以为等待执行第二代码所需的第一互斥锁的队列。
如此可知,由于电子设备可以在第一时间段外,在第一线程再次获取执行第二代码所需的第一互斥锁失败的情况下,控制第一线程处于阻塞状态,并将第三线程标识加入第一等待队列,因此,可以避免因CPU多次运行已经卡住的第一线程,而导致系统资源的浪费。
当然,电子设备还可以更新上述至少一个第一对应关系,以使得电子设备可以准确地确定卡住第一线程的线程,以下将举例说明。
在本申请的一些实施例中,在上述步骤103之后,本申请实施例提供的线程管理方法还可以包括下述的步骤501、步骤502以及步骤503,或步骤501、步骤502以及步骤504。
步骤501、在第一线程处于阻塞状态的情况下,若电子设备通过第四线程唤醒第一线程,则电子设备获取第四线程的第五线程标识。
在本申请的一些实施例中,电子设备确定上述第一进程已重启的情况下,若第一线程处于阻塞状态、且电子设备通过第四线程唤醒第一线程,则电子设备可以获取第四线程的第五线程标识。
需要说明的是,针对电子设备获取第五线程标识的说明,可以参考上述实施例中电子设备获取第四线程标识的具体描述,本申请实施例在此不再赘述。
步骤502、电子设备根据第五线程标识和第二代码标识,确定第三对应关系。
步骤503、电子设备在至少一个第一对应关系中添加第三对应关系。
本申请实施例中,由于在第一进程已重启的情况下,该第一进程包括的多个线程的运行环境可能发生改变,因此,电子设备可以在第一线程处于阻塞状态、且通过第四线程唤醒第一线程的情况下,重新确定第三对应关系,并在至少一个第一对应关系中添加第三对应关系。
如此可知,由于电子设备可以在提高第二线程的运行速度之后,在第一线程处于阻塞状态的情况下,再次获取持有执行第二代码所需的互斥锁的第四线程的第五线程标识,并根据第五线程标识和第二代码标识建立新的对应关系,以在至少一个第一对应关系中添加该新的对应关系,因此,可以增加该至少一个第一对应关系的数量,从而可以减少电子设备无法根据该至少一个第一对应关系准确确定卡住第一线程的线程的线程标识的情况。
步骤504、电子设备基于第三对应关系更新至少一个第一对应关系。
在本申请的一些实施例中,电子设备可以从至少一个第一对应关系中,确定出第四对应关系,再将第四对应关系替换为第三对应关系,以更新至少一个第一对应关系。其中,该第四对应关系为:第二代码标识和第二线程标识之间的对应关系。
如此可知,由于电子设备可以在提高第二线程的运行速度之后,在第一线程处于阻塞状态的情况下,再次获取持有执行第二代码所需的互斥锁的第四线程的第五线程标识,并根据第五线程标识和第二代码标识建立新的对应关系,以对至少一个第一对应关系进行更新,因此,电子设备可以根据该至少一个第一对应关系准确确定卡住第一线程的线程的线程标识的情况。
本申请实施例提供的线程管理方法,执行主体可以为线程管理装置。本申请实施例中以线程管理装置执行线程管理方法为例,说明本申请实施例提供的线程管理装置的。
图8示出了本申请实施例中涉及的线程管理装置的一种可能的结构示意图。如图8所示,本申请实施例提供的线程管理装置50可以包括:获取模块51和处理模块52。
其中,获取模块51,用于在线程管理装置50的第一线程处于运行状态的情况下,获取至少一个第一对应关系,该第一对应关系为第一代码标识和第一线程标识之间的对应关系,该第一代码标识用于指示第一线程所需执行的第一代码,该第一线程标识用于指示持有第一互斥锁的线程,该第一互斥锁用于访问第一共享资源,该第一共享资源为运行第一线程所需的共享资源。处理模块52,用于在通过第一线程执行至少一个第一代码中的第二代码的情况下,根据获取模块51获取的至少一个第一对应关系,确定与第二代码标识对应的第二线程标识,该第二代码标识为与第二代码对应的代码标识;并提高第二线程标识指示的第二线程的运行速度。
本申请实施例提供一种线程管理装置,由于在第一线程处于运行状态的情况下,线程管理装置可以获取至少一个第一对应关系,该第一对应关系是第一线程所需执行的第一代码的代码标识和持有运行第一线程所需的第一互斥锁的线程的线程标识的对应关系,这样在通过第一线程执行第二代码的情况下,线程管理装置可以直接根据该至少一个第一对应关系,确定出持有执行第二代码时所需的第一互斥锁的第二线程的第二线程标识,并直接提高该第二线程的运行速度,因此,可以减少第二线程持有执行第二代码时所需的第一互斥锁的时长,即可以使得第二线程快速地释放执行第二代码时所需的第一互斥锁,从而使得第一线程可以快速地执行第二代码,进而使得线程管理装置可以快速地运行第一线程所属的进程,以快速地执行该进程相关的任务,如此,可以减少线程管理装置出现卡顿的现象。
在一种可能的实现方式中,上述处理模块52,还用于在线程管理装置50的第一线程处于运行状态的情况下,获取模块51获取至少一个第一对应关系之后,在通过第一线程执行第二代码的情况下,若第一线程获取第一互斥锁失败,则更新第三线程标识在第一调度队列中的队列顺序,其中,该第三线程标识为与第一线程对应的线程标识,该第一调度队列为通过CPU运行线程的队列。
在一种可能的实现方式中,上述处理模块52,具体用于将第三线程标识在第一调度队列中的队列顺序,调整为最后第N个;N为正整数。
在一种可能的实现方式中,上述处理模块52,具体用于在更新第一线程的第三线程标识在第一调度队列中的队列顺序之后,在从第一时刻起的第一时间段内,若第一线程获取第一互斥锁失败,则再次更新第三线程标识在第一调度队列中的队列顺序;或者,在更新第一线程的第三线程标识在第一调度队列中的队列顺序之后,在从第一时刻起的第一时间段外,若第一线程获取第一互斥锁失败,则控制第一线程处于阻塞状态,并将第三线程标识加入第一等待队列,该第一等待队列为等待第一互斥锁的队列。其中,上述第一时刻为:上一次更新第三线程标识在第一调度队列中的队列顺序的时刻。
在一种可能的实现方式中,上述第一时间段的时长与第一线程的运行优先级正相关。
在一种可能的实现方式中,上述获取模块51,还用于在线程管理装置50的第一线程处于运行状态的情况下,获取至少一个第一对应关系之前,在第一线程处于阻塞状态的情况下,若通过第三线程唤醒第一线程,则获取第三线程的第四线程标识和第三代码标识;该第三代码标识用于指示:在第一线程处于阻塞状态之前最后执行的第一代码。上述处理模块52,还用于根据获取模块51获取的第四线程标识和第三代码标识,确定一个第一对应关系。
在一种可能的实现方式中,上述获取模块51,还用于在提高第二线程标识指示的第二线程的运行速度之后,在第一线程处于阻塞状态的情况下,若通过第四线程唤醒第一线程,则获取第四线程的第五线程标识。上述处理模块52,还用于根据第五线程标识和第二代码标识,确定第三对应关系;并在至少一个第一对应关系中添加第三对应关系,或者,基于第三对应关系更新至少一个第一对应关系。
如此可知,采用上述方案,一方面,线程管理装置在通过第一线程执行第二代码时,在第一线程获取执行第二代码所需的第一互斥锁失败的情况下,更新第三线程标识在第一调度队列中的队列顺序,以等待该第一互斥锁,而无需将第一线程所处的状态从运行状态切换为阻塞状态,因此,可以减少切换第一线程所处的状态的次数,以节省系统资源;并且,线程管理装置可以将第三线程标识在第一调度队列中的队列顺序,调整为最后第N个,这样可以增加CPU再次运行第一线程的时间间隔的时长,因此,可以有较多时间等待执行第二代码所需的第一互斥锁,从而可以减少第一线程再次获取执行第二代码所需的第一互斥锁失败的概率。另一方面,由于线程管理装置可以在第一时间段内,在第一线程再次获取执行第二代码所需的第一互斥锁失败的情况下,再次更新第三线程标识在第一调度队列中的队列顺序,以减少切换第一线程所处的状态的次数,或者,可以在第一时间段外,在第一线程再次获取执行第二代码所需的第一互斥锁失败的情况下,控制第一线程处于阻塞状态,并将第三线程标识加入第一等待队列,以避免因CPU多次运行已经卡住的第一线程,从而可以避免系统资源的浪费。再一方面,由于线程管理装置可以在第一线程在执行某个第一代码因未获取到某个互斥锁而处于阻塞状态、且第三线程唤醒第一线程的情况下,确定第三线程持有该某个互斥锁,并建立该第三线程的第四线程标识和该某个代码的第三代码标识之间的对应关系,这样在线程管理装置后续执行该某个代码时,线程管理装置可以直接根据该对应关系,准确地确定持有该某个互斥锁的第三线程,以对该第三线程进行控制,因此,可以避免第一线程较长时间处于阻塞状态的情况。又一方面,由于线程管理装置可以在提高第二线程的运行速度之后,在第一线程处于阻塞状态的情况下,再次获取持有执行第二代码所需的互斥锁的第四线程的第五线程标识,并根据第五线程标识和第二代码标识建立新的对应关系,以在至少一个第一对应关系中添加该新的对应关系,因此,可以增加该至少一个第一对应关系的数量,从而可以减少线程管理装置无法根据该至少一个第一对应关系准确确定卡住第一线程的线程的线程标识的情况,或者,可以再次获取持有执行第二代码所需的互斥锁的第四线程的第五线程标识,并根据第五线程标识和第二代码标识建立新的对应关系,以对至少一个第一对应关系进行更新,因此,线程管理装置可以根据该至少一个第一对应关系准确确定卡住第一线程的线程的线程标识的情况。
本申请实施例中的线程管理装置可以是电子设备,也可以是电子设备中的部件,例如集成电路或芯片。该电子设备可以是终端,也可以为除终端之外的其他设备。示例性的,电子设备可以为手机、平板电脑、笔记本电脑、掌上电脑、车载电子设备、移动上网装置(mobile internet device,MID)、增强现实(augmentedreality,AR)/虚拟现实(virtualreality,VR)设备、机器人、可穿戴设备、超级移动个人计算机(ultra-mobile personalcomputer,UMPC)、上网本或者个人数字助理(personal digital assistant,PDA)等,还可以为服务器、网络附属存储器(network attached storage,NAS)、个人计算机(personalcomputer,PC)、电视机(television,TV)、柜员机或者自助机等,本申请实施例不作具体限定。
本申请实施例中的线程管理装置可以为具有操作系统的装置。该操作系统可以为安卓(Android)操作系统,可以为iOS操作系统,还可以为其他可能的操作系统,本申请实施例不作具体限定。
本申请实施例提供的线程管理装置能够实现图1至图7的方法实施例实现的各个过程,为避免重复,这里不再赘述。
在本申请的一些实施例中,如图9所示,本申请实施例还提供一种电子设备60,包括处理器61和存储器62,存储器62上存储有可在所述处理器61上运行的程序或指令,该程序或指令被处理器61执行时实现上述线程管理方法实施例的各个过程步骤,且能达到相同的技术效果,为避免重复,这里不再赘述。
需要说明的是,本申请实施例中的电子设备包括上述的移动电子设备和非移动电子设备。
图10为实现本申请实施例的一种电子设备的硬件结构示意图。
该电子设备100包括但不限于:射频单元101、网络模块102、音频输出单元103、输入单元104、传感器105、显示单元106、用户输入单元107、接口单元108、存储器109、以及处理器110等部件。
本领域技术人员可以理解,电子设备100还可以包括给各个部件供电的电源(比如电池),电源可以通过电源管理系统与处理器110逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。图10中示出的电子设备结构并不构成对电子设备的限定,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置,在此不再赘述。
其中,处理器110,用于在电子设备的第一线程处于运行状态的情况下,获取至少一个第一对应关系,该第一对应关系为第一代码标识和第一线程标识之间的对应关系,该第一代码标识用于指示第一线程所需执行的第一代码,该第一线程标识用于指示持有第一互斥锁的线程,该第一互斥锁用于访问第一共享资源,该第一共享资源为运行第一线程所需的共享资源;在通过第一线程执行至少一个第一代码中的第二代码的情况下,根据至少一个第一对应关系,确定与第二代码标识对应的第二线程标识,该第二代码标识为与第二代码对应的代码标识;提高第二线程标识指示的第二线程的运行速度。
本申请的实施例提供一种电子设备,由于在第一线程处于运行状态的情况下,电子设备可以获取至少一个第一对应关系,该第一对应关系是第一线程所需执行的第一代码的代码标识和持有运行第一线程所需的第一互斥锁的线程的线程标识的对应关系,这样在通过第一线程执行第二代码的情况下,电子设备可以直接根据该至少一个第一对应关系,确定出持有执行第二代码时所需的第一互斥锁的第二线程的第二线程标识,并直接提高该第二线程的运行速度,因此,可以减少第二线程持有执行第二代码时所需的第一互斥锁的时长,即可以使得第二线程快速地释放执行第二代码时所需的第一互斥锁,从而使得第一线程可以快速地执行第二代码,进而使得电子设备可以快速地运行第一线程所属的进程,以快速地执行该进程相关的任务,如此,可以减少电子设备出现卡顿的现象。
在本申请的一些实施例中,处理器110,还用于在电子设备的第一线程处于运行状态的情况下,获取至少一个第一对应关系之后,在通过第一线程执行第二代码的情况下,若第一线程获取第一互斥锁失败,则更新第三线程标识在第一调度队列中的队列顺序,其中,该第三线程标识为与第一线程对应的线程标识,该第一调度队列为通过CPU运行线程的队列。
在本申请的一些实施例中,处理器110,具体用于将第三线程标识在第一调度队列中的队列顺序,调整为最后第N个;N为正整数。
在本申请的一些实施例中,处理器110,还用于在更新第一线程的第三线程标识在第一调度队列中的队列顺序之后,在从第一时刻起的第一时间段内,若第一线程获取第一互斥锁失败,则再次更新第三线程标识在第一调度队列中的队列顺序;或者,在从第一时刻起的第一时间段外,若第一线程获取第一互斥锁失败,则控制第一线程处于阻塞状态,并将第三线程标识加入第一等待队列,该第一等待队列为等待第一互斥锁的队列。其中,上述第一时刻为:上一次更新第三线程标识在第一调度队列中的队列顺序的时刻。
在本申请的一些实施例中,处理器110,还用于在电子设备的第一线程处于运行状态的情况下,获取至少一个第一对应关系之前,在第一线程处于阻塞状态的情况下,若通过第三线程唤醒第一线程,则获取第三线程的第四线程标识和第三代码标识;该第三代码标识用于指示:在第一线程处于阻塞状态之前最后执行的第一代码;根据第四线程标识和第三代码标识,确定一个第一对应关系。
在本申请的一些实施例中,处理器110,还用于在提高第二线程标识指示的第二线程的运行速度之后,在第一线程处于阻塞状态的情况下,若通过第四线程唤醒第一线程,则获取第四线程的第五线程标识;根据第五线程标识和第二代码标识,确定第三对应关系;在至少一个第一对应关系中添加第三对应关系,或者,基于第三对应关系更新至少一个第一对应关系。
如此可知,采用上述方案,一方面,电子设备电子设备在通过第一线程执行第二代码时,在第一线程获取执行第二代码所需的第一互斥锁失败的情况下,更新第三线程标识在第一调度队列中的队列顺序,以等待该第一互斥锁,而无需将第一线程所处的状态从运行状态切换为阻塞状态,因此,可以减少切换第一线程所处的状态的次数,以节省系统资源;并且,电子设备可以将第三线程标识在第一调度队列中的队列顺序,调整为最后第N个,这样可以增加CPU再次运行第一线程的时间间隔的时长,因此,可以有较多时间等待执行第二代码所需的第一互斥锁,从而可以减少第一线程再次获取执行第二代码所需的第一互斥锁失败的概率。另一方面,由于电子设备可以在第一时间段内,在第一线程再次获取执行第二代码所需的第一互斥锁失败的情况下,再次更新第三线程标识在第一调度队列中的队列顺序,以减少切换第一线程所处的状态的次数,或者,可以在第一时间段外,在第一线程再次获取执行第二代码所需的第一互斥锁失败的情况下,控制第一线程处于阻塞状态,并将第三线程标识加入第一等待队列,以避免因CPU多次运行已经卡住的第一线程,从而可以避免系统资源的浪费。再一方面,由于电子设备可以在第一线程在执行某个第一代码因未获取到某个互斥锁而处于阻塞状态、且第三线程唤醒第一线程的情况下,确定第三线程持有该某个互斥锁,并建立该第三线程的第四线程标识和该某个代码的第三代码标识之间的对应关系,这样在电子设备后续执行该某个代码时,电子设备可以直接根据该对应关系,准确地确定持有该某个互斥锁的第三线程,以对该第三线程进行控制,因此,可以避免第一线程较长时间处于阻塞状态的情况。又一方面,由于电子设备可以在提高第二线程的运行速度之后,在第一线程处于阻塞状态的情况下,再次获取持有执行第二代码所需的互斥锁的第四线程的第五线程标识,并根据第五线程标识和第二代码标识建立新的对应关系,以在至少一个第一对应关系中添加该新的对应关系,因此,可以增加该至少一个第一对应关系的数量,从而可以减少电子设备无法根据该至少一个第一对应关系准确确定卡住第一线程的线程的线程标识的情况,或者,可以再次获取持有执行第二代码所需的互斥锁的第四线程的第五线程标识,并根据第五线程标识和第二代码标识建立新的对应关系,以对至少一个第一对应关系进行更新,因此,电子设备可以根据该至少一个第一对应关系准确确定卡住第一线程的线程的线程标识的情况。
应理解的是,本申请实施例中,输入单元104可以包括图形处理器(graphicsprocessing unit,GPU)1041和麦克风1042,图形处理器1041对在视频捕获模式或图像捕获模式中由图像捕获装置(如摄像头)获得的静态图片或视频的图像数据进行处理。显示单元106可包括显示面板1061,可以采用液晶显示器、有机发光二极管等形式来配置显示面板1061。用户输入单元107包括触控面板1071以及其他输入设备1072中的至少一种。触控面板1071,也称为触摸屏。触控面板1071可包括触摸检测装置和触摸控制器两个部分。其他输入设备1072可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆,在此不再赘述。
存储器109可用于存储软件程序以及各种数据。存储器109可主要包括存储程序或指令的第一存储区和存储数据的第二存储区,其中,第一存储区可存储操作系统、至少一个功能所需的应用程序或指令(比如声音播放功能、图像播放功能等)等。此外,存储器109可以包括易失性存储器或非易失性存储器,或者,存储器109可以包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(doubledata rate SDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synch linkDRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DRRAM)。本申请实施例中的存储器109包括但不限于这些和任意其它适合类型的存储器。
处理器110可包括一个或多个处理单元;可选的,处理器110集成应用处理器和调制解调处理器,其中,应用处理器主要处理涉及操作系统、用户界面和应用程序等的操作,调制解调处理器主要处理无线通信信号,如基带处理器。可以理解的是,上述调制解调处理器也可以不集成到处理器110中。
本申请实施例还提供一种可读存储介质,所述可读存储介质上存储有程序或指令,该程序或指令被处理器执行时实现上述线程管理方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
其中,所述处理器为上述实施例中所述的电子设备中的处理器。所述可读存储介质,包括计算机可读存储介质,如计算机只读存储器ROM、随机存取存储器RAM、磁碟或者光盘等。
本申请实施例另提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现上述线程管理方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
应理解,本申请实施例提到的芯片还可以称为系统级芯片、系统芯片、芯片系统或片上系统芯片等。
本申请实施例提供一种计算机程序产品,该程序产品被存储在存储介质中,该程序产品被至少一个处理器执行以实现如上述线程管理方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。此外,需要指出的是,本申请实施方式中的方法和装置的范围不限按示出或讨论的顺序来执行功能,还可包括根据所涉及的功能按基本同时的方式或按相反的顺序来执行功能,例如,可以按不同于所描述的次序来执行所描述的方法,并且还可以添加、省去、或组合各种步骤。另外,参照某些示例所描述的特征可在其他示例中被组合。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以计算机软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。

Claims (15)

1.一种线程管理方法,其特征在于,所述方法包括:
在电子设备的第一线程处于运行状态的情况下,获取至少一个第一对应关系,所述第一对应关系为第一代码标识和第一线程标识之间的对应关系,所述第一代码标识用于指示所述第一线程所需执行的第一代码,所述第一线程标识用于指示持有第一互斥锁的线程,所述第一互斥锁用于访问第一共享资源,所述第一共享资源为运行所述第一线程所需的共享资源;
在通过所述第一线程执行至少一个所述第一代码中的第二代码的情况下,根据至少一个所述第一对应关系,确定与第二代码标识对应的第二线程标识,所述第二代码标识为与所述第二代码对应的代码标识;
提高所述第二线程标识指示的第二线程的运行速度。
2.根据权利要求1所述的方法,其特征在于,所述在电子设备的第一线程处于运行状态的情况下,获取至少一个第一对应关系之后,所述方法还包括:
在通过所述第一线程执行所述第二代码的情况下,若所述第一线程获取所述第一互斥锁失败,则更新第三线程标识在第一调度队列中的队列顺序,其中所述第三线程标识为与所述第一线程对应的线程标识,所述第一调度队列为通过中央处理器CPU运行线程的队列。
3.根据权利要求2所述的方法,其特征在于,所述更新第三线程标识在第一调度队列中的队列顺序,包括:
将所述第三线程标识在所述第一调度队列中的队列顺序,调整为最后第N个;N为正整数。
4.根据权利要求2所述的方法,其特征在于,所述更新第三线程标识在第一调度队列中的队列顺序之后,所述方法还包括:
在从第一时刻起的第一时间段内,若所述第一线程获取所述第一互斥锁失败,则再次更新所述第三线程标识在所述第一调度队列中的队列顺序;或者,
在从所述第一时刻起的所述第一时间段外,若所述第一线程获取所述第一互斥锁失败,则控制所述第一线程处于阻塞状态,并将所述第三线程标识加入第一等待队列,所述第一等待队列为等待所述第一互斥锁的队列;
其中,所述第一时刻为:上一次更新所述第三线程标识在第一调度队列中的队列顺序的时刻。
5.根据权利要求4所述的方法,其特征在于,所述第一时间段的时长与所述第一线程的运行优先级正相关。
6.根据权利要求1所述的方法,其特征在于,所述在电子设备的第一线程处于运行状态的情况下,获取至少一个第一对应关系之前,所述方法还包括:
在所述第一线程处于阻塞状态的情况下,若通过第三线程唤醒所述第一线程,则获取所述第三线程的第四线程标识和第三代码标识;所述第三代码标识用于指示:在所述第一线程处于阻塞状态之前最后执行的所述第一代码;
根据所述第四线程标识和所述第三代码标识,确定一个所述第一对应关系。
7.根据权利要求1所述的方法,其特征在于,所述提高所述第二线程标识指示的第二线程的运行速度之后,所述方法还包括:
在所述第一线程处于阻塞状态的情况下,若通过第四线程唤醒所述第一线程,则获取所述第四线程的第五线程标识;
根据所述第五线程标识和所述第二代码标识,确定第三对应关系;
在至少一个所述第一对应关系中添加所述第三对应关系,或者,基于所述第三对应关系更新至少一个所述第一对应关系。
8.一种线程管理装置,其特征在于,所述线程管理装置包括:获取模块和处理模块;
所述获取模块,用于在所述线程管理装置的第一线程处于运行状态的情况下,获取至少一个第一对应关系,所述第一对应关系为第一代码标识和第一线程标识之间的对应关系,所述第一代码标识用于指示所述第一线程所需执行的第一代码,所述第一线程标识用于指示持有第一互斥锁的线程,所述第一互斥锁用于访问第一共享资源,所述第一共享资源为运行所述第一线程所需的共享资源;
所述处理模块,用于在通过所述第一线程执行至少一个所述第一代码中的第二代码的情况下,根据所述获取模块获取的至少一个所述第一对应关系,确定与第二代码标识对应的第二线程标识,所述第二代码标识为与所述第二代码对应的代码标识;并提高所述第二线程标识指示的第二线程的运行速度。
9.根据权利要求8所述的线程管理装置,其特征在于,
所述处理模块,还用于在所述线程管理装置的所述第一线程处于运行状态的情况下,所述获取模块获取至少一个所述第一对应关系之后,在通过所述第一线程执行第二代码的情况下,若所述第一线程获取所述第一互斥锁失败,则更新第三线程标识在第一调度队列中的队列顺序,其中,所述第三线程标识为与所述第一线程对应的线程标识,所述第一调度队列为通过CPU运行线程的队列。
10.根据权利要求9所述的线程管理装置,其特征在于,
所述处理模块,具体用于将所述第三线程标识在所述第一调度队列中的队列顺序,调整为最后第N个;N为正整数。
11.根据权利要求9所述的线程管理装置,其特征在于,
所述处理模块,具体用于在更新所述第三线程标识在所述第一调度队列中的队列顺序之后,在从第一时刻起的第一时间段内,若所述第一线程获取所述第一互斥锁失败,则再次更新所述第三线程标识在所述第一调度队列中的队列顺序;或者,在更新所述第三线程标识在所述第一调度队列中的队列顺序之后,在从所述第一时刻起的所述第一时间段外,若所述第一线程获取所述第一互斥锁失败,则控制所述第一线程处于阻塞状态,并将所述第三线程标识加入第一等待队列,所述第一等待队列为等待所述第一互斥锁的队列;
其中,所述第一时刻为:上一次更新所述第三线程标识在第一调度队列中的队列顺序的时刻。
12.根据权利要求11所述的线程管理装置,其特征在于,所述第一时间段的时长与所述第一线程的运行优先级正相关。
13.根据权利要求8所述的线程管理装置,其特征在于,
所述获取模块,还用于在所述线程管理装置的所述第一线程处于运行状态的情况下,获取至少一个所述第一对应关系之前,在所述第一线程处于阻塞状态的情况下,若通过第三线程唤醒所述第一线程,则获取所述第三线程的第四线程标识和第三代码标识;所述第三代码标识用于指示:在所述第一线程处于阻塞状态之前最后执行的所述第一代码;
所述处理模块,还用于根据所述获取模块获取的所述第四线程标识和所述第三代码标识,确定一个所述第一对应关系。
14.根据权利要求8所述的线程管理装置,其特征在于,
所述获取模块,还用于在提高所述第二线程标识指示的所述第二线程的运行速度之后,在所述第一线程处于阻塞状态的情况下,若通过第四线程唤醒所述第一线程,则获取所述第四线程的第五线程标识;
所述处理模块,还用于根据所述第五线程标识和所述第二代码标识,确定第三对应关系;并在至少一个所述第一对应关系中添加所述第三对应关系,或者,基于所述第三对应关系更新至少一个所述第一对应关系。
15.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如权利要求1至7中任一项所述的线程管理方法的步骤。
CN202311194423.7A 2023-09-15 2023-09-15 线程管理方法、装置及电子设备 Pending CN117149391A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311194423.7A CN117149391A (zh) 2023-09-15 2023-09-15 线程管理方法、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311194423.7A CN117149391A (zh) 2023-09-15 2023-09-15 线程管理方法、装置及电子设备

Publications (1)

Publication Number Publication Date
CN117149391A true CN117149391A (zh) 2023-12-01

Family

ID=88898724

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311194423.7A Pending CN117149391A (zh) 2023-09-15 2023-09-15 线程管理方法、装置及电子设备

Country Status (1)

Country Link
CN (1) CN117149391A (zh)

Similar Documents

Publication Publication Date Title
CN109918141B (zh) 线程执行方法、装置、终端及存储介质
KR102338849B1 (ko) 실시간 운영 체제에서 스택 메모리 관리를 제공하는 방법 및 시스템
CN113010275A (zh) 一种中断处理方法和装置
CN111831414A (zh) 线程迁移方法、装置、存储介质及电子设备
CN115576645B (zh) 一种虚拟处理器调度方法、装置、存储介质及电子设备
US8769233B2 (en) Adjusting the amount of memory allocated to a call stack
US10318456B2 (en) Validation of correctness of interrupt triggers and delivery
CN113467884A (zh) 资源配置方法和装置、电子设备及计算机可读存储介质
CN111831434A (zh) 资源分配方法、装置、存储介质及电子设备
CN111831432B (zh) Io请求的调度方法、装置、存储介质及电子设备
CN111475299B (zh) 内存分配方法、装置、存储介质及电子设备
US20080313652A1 (en) Notifying user mode scheduler of blocking events
CN111831443A (zh) 处理器状态调整方法、装置、存储介质及电子设备
CN111831436A (zh) Io请求的调度方法、装置、存储介质及电子设备
JP2001117786A (ja) プロセススケジューリング装置およびプロセススケジューリング方法
CN101349975B (zh) 一种在嵌入式操作系统上实现中断底半部机制的方法及装置
CN117149391A (zh) 线程管理方法、装置及电子设备
CN115617518A (zh) 线程管理方法、装置、电子设备及存储介质
CN113687942A (zh) 检测方法、装置及电子设备
CN113495787A (zh) 资源分配方法、装置、存储介质及电子设备
CN111831412A (zh) 中断处理方法、装置、存储介质及电子设备
CN116860412A (zh) 线程调度方法、装置和电子设备
CN116991605A (zh) 进程处理方法、装置、电子设备和可读存储介质
CN106951264A (zh) 一种开机时间优化方法和装置
CN115964180A (zh) 任务调度方法、装置和电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination