CN114461353A - 调整线程优先级的方法、终端及计算机可读存储介质 - Google Patents

调整线程优先级的方法、终端及计算机可读存储介质 Download PDF

Info

Publication number
CN114461353A
CN114461353A CN202011238906.9A CN202011238906A CN114461353A CN 114461353 A CN114461353 A CN 114461353A CN 202011238906 A CN202011238906 A CN 202011238906A CN 114461353 A CN114461353 A CN 114461353A
Authority
CN
China
Prior art keywords
thread
priority
state
adjusting
threads
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
CN202011238906.9A
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.)
ZTE Corp
Original Assignee
ZTE Corp
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 ZTE Corp filed Critical ZTE Corp
Priority to CN202011238906.9A priority Critical patent/CN114461353A/zh
Priority to US18/036,145 priority patent/US20230409391A1/en
Priority to PCT/CN2021/128287 priority patent/WO2022095862A1/zh
Priority to EP21888559.8A priority patent/EP4242842A4/en
Publication of CN114461353A publication Critical patent/CN114461353A/zh
Pending legal-status Critical Current

Links

Images

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
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • 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
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4818Priority circuits therefor
    • 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
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4831Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority
    • 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
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • 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/524Deadlock detection or avoidance
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明实施例提供调整线程优先级的方法、终端及计算机可读存储介质,通过监控至少一个线程的状态;当监控到至少一个线程处于预设阻塞状态时,检测同一进程中的各线程的运行状态和关联状态;根据各线程的运行状态和关联状态对所述同一进程中的一个或至少两个线程进行优先级调整。在某些实施过程中可实现包括但不限于的动态调整线程优先级,改善系统性能的技术效果。

Description

调整线程优先级的方法、终端及计算机可读存储介质
技术领域
本发明实施例涉及但不限于终端领域,具体而言,涉及但不限于调整线程优先级的方法、终端及计算机可读存储介质。
背景技术
对于一些终端产品,其框架服务存在多个不同功能的线程,而不同线程需要相互通过锁的方式协调共享资源的访问,也是通过锁的方式来传递优先级。这就要求线程之间必须要有锁竞争,才能实现优先级传递。而对于锁竞争,存在多个线程必须获取同一个锁,在当前线程获取该锁的情形下,其他线程只能按照优先级获取该锁,无法动态调整线程的优先级,系统性能较低。
发明内容
本发明实施例提供的一种调整线程优先级的方法、终端及计算机可读存储介质,主要解决的技术问题是线程按照预设优先级进行执行,导致的系统性能较低问题。
为解决上述技术问题,本发明实施例提供一种调整线程优先级的方法,所述方法包括:
监控至少一个线程的状态;
当监控到所述至少一个线程处于预设阻塞状态时,检测同一进程中的各线程的运行状态和关联状态;
根据所述各线程的运行状态和关联状态对所述同一进程中的一个或至少两个线程进行优先级调整。
本发明实施例还提供一种终端,所述终端包括监控模块、检测模块、调整模块;
所述监控模块,用于监控至少一个线程的状态;
所述检测模块,用于当所述监控模块监控到所述至少一个线程处于预设阻塞状态时,检测同一进程中的各线程的运行状态和关联状态;
所述调整模块,用于根据所述各线程的运行状态和关联状态对所述同一进程中的一个或至少两个线程进行优先级调整。
本发明实施例还提供一种终端,所述终端包括处理器、存储器及通信总线;
所述通信总线用于实现处理器和存储器之间的连接通信;
所述处理器用于执行存储器中存储的一个或者多个计算机程序,以实现如上所述的调整线程优先级方法的步骤。
本发明实施例还提供一种计算机存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如上所述的调整线程优先级方法的步骤。
根据本发明实施例提供的调整线程优先级的方法、终端及计算机可读存储介质,通过监控至少一个线程的状态;当监控到至少一个线程处于预设阻塞状态时,检测同一进程中的各线程的运行状态和关联状态;根据各线程的运行状态和关联状态对同一进程中的一个或至少两个线程进行优先级调整。在某些实施过程中可实现线程优先级的动态调整,进而改善系统性能。
本发明其他特征和相应的有益效果在说明书的后面部分进行阐述说明,且应当理解,至少部分有益效果从本发明说明书中的记载变的显而易见。
附图说明
图1为本发明实施例一的调整线程优先级方法的基本流程图;
图2为本发明实施例二的调整线程优先级方法的细化流程图;
图3为本发明实施例三的终端的组成示意图;
图4为本发明实施例四的终端的组成示意图;
图5为本发明实施例四的线程的状态示意图;
图6为本发明实施例五的终端的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,下面通过具体实施方式结合附图对本发明实施例作进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
实施例一:
为了解决线程按照优先级进行执行,很难调整线程的优先级,系统性能较低的技术问题,本发明提出一种调整线程优先级的方法,下面结合本实施例对该方法进行说明:
请参见图1,图1为本发明实施例一的调整线程优先级方法的基本流程图,该方法包括:
S101、监控至少一个线程的状态。
在一些实施例中,至少一个线程可以包括:调用进程调度函数,且需要等待系统资源而暂停运行的线程;和/或;当CPU执行的当前指令中有中断或异常的进程,且所述当前指令中的中断或异常的进程优先级高于所述CPU执行下一条指令的进程优先级时,执行进程调度函数的线程。具体来说,是CPU在执行当前指令之后,在执行下一条指令之前,检测到所述当前指令执行后发生中断或异常,比较中断或异常的进程优先级与下一条指令的进程优先级,当中断或异常的进程优先级高于下一条指令的进程优先级时,则执行中断服务程序,在返回中断时,将执行进程调度函数的线程。其中调用的进程调度函数可以为schedule()。
而对于IO资源导致的线程调度,在调用进程调度schedule函数前可以设置IO的标志位,这时就可以判断线程是否是因为IO资源导致的状态切换。
线程使用网络资源时会调用套接字socket接口,在socket接口可以增加一些标志位,当线程状态切换时,就可以知道是否是因为网络资源导致出现的线程阻塞。
在一些实施例中,监控至少一个线程的状态可以包括:检测所述至少一个线程执行等待策略,至少一个线程为等待状态;或;检测到所述至少一个线程执行休眠策略,且休眠时间超过第一预设时长,所述至少一个线程由等待状态转入就绪状态;或;检测到所述至少一个线程执行等待调用当前线程执行完毕后继续执行下一线程的策略,且等待时间超过第二预设时长,所述至少一个线程由等待状态转入就绪状态;或;检测到所述至少一个线程发出获取输入或输出资源的请求,所述至少一个线程由等待状态转入就绪状态。其中等待策略为wait()方法,让当前线程暂停执行并释放对象锁标志。其中休眠策略为sleep()方法,使当前线程暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁。其中等待调用当前线程执行完毕后继续执行下一线程的策略为join()方法,使调用该方法的线程在此之前执行完毕,也就是等待调用该方法的线程执行完毕后再往下继续执行。
S102、当监控到至少一个线程处于预设阻塞状态时,检测同一进程中的各线程的运行状态和关联状态。
在本步骤中的预设堵塞状态可以包括:因为系统资源无法获取而堵塞或线程主动放弃CPU。其中系统资源至少包括以下一种:网络资源、I/O资源。系统资源还可以包括内存、CPU资源等。
对于至少一个线程在获取对象的同步锁时,同步锁被其他的线程占用。该线程可以直接得出线程处于预设阻塞状态。
其中关联各线程的关联状态可以包括:各线程的优先级顺序,或,各线程的优先级顺序和各线程的互相唤醒信息。
S103、根据各线程的运行状态和关联状态对同一进程中的一个或至少两个线程进行优先级调整。
在一些实施例中,根据各线程的运行状态和关联状态对同一进程中的一个或至少两个线程进行优先级调整可以包括:确认各线程的优先级,根据各线程的运行状态、优先级调整各线程中至少一个线程的优先级。而根据所述各线程的运行状态、优先级来调整各线程中至少一个线程的优先级可以包括:当各线程中有处于就绪状态的第一线程,以及处于等待状态的第二线程时;确认第一线程与第二线程的优先级;当第一线程的优先级低于第二线程时,将第一线程的优先级调整至所述第二线程之前。
根据所述各线程的运行状态、优先级来调整各线程中至少一个线程的优先级还可以包括:
当各线程中有处于就绪状态的第三线程,以及处于等待状态的第四线程时;
确认第三线程与第四线程的优先级;
当第三线程的优先级低于第四线程,第三线程和第四线程互相唤醒时,将第三线程的优先级调整至所述第四线程之前。
具体来说,统计同一进程的各线程的信息,根据统计的信息判断当前进程内部是否有处于就绪runnable状态的线程阻塞了比就绪runnable状态的线程高优先级的线程。其中统计同一进程的各线程的信息包括:线程的运行状态、时间片、优先级以及线程之前互相唤醒的信息。其中如果发现两个线程频繁的互相唤醒,一个是处于runnable状态,一个处于wait状态,则很大程度上是处于wait状态的线程是因为处于runnable的线程无法执行导致,提高runnable线程的优先级,优先获取资源。这样就可以根据统计的信息判断当前进程内部是否有处于runnable状态的低优先级的线程,阻塞了高优先级的线程,如果有,则需要调整低优先级的线程,使低优先级的线程优先获取资源。其中统计的信息还可以使用操作系统的外部proc或者sys文件系统节点输出线程状态,调度信息,IO信息,网络信息等,外部应用可以根据这些信息生成智能策略输入给系统,让优先级传递更智能。
在一些实施例中,根据各线程的运行状态和关联状态对同一进程中的一个或至少两个线程进行优先级调整之后还可以包括:根据调整后的各线程的优先级,等待系统资源分配运行的时间片对各线程进行处理;恢复被调整的各线程的优先级。
本发明实施例提供的通过监控至少一个线程的状态;当监控到至少一个线程处于预设阻塞状态时,检测同一进程中的各线程的运行状态和关联状态;根据各线程的运行状态和关联状态对同一进程中的一个或至少两个线程进行优先级调整。动态调整了线程优先级提高了系统性能。
实施例二:
本发明的调整线程优先级的方法可实现线程优先级的动态调整,进而提高系统性能,为了便于理解,下面结合一种应用场景对本发明的调整线程优先级的方法进行说明。
图2为本发明实施例二提供的调整线程优先级方法的细化流程图,该调整线程优先级的方法包括:
S201:监控线程状态,当线程状态从运行状态切换非运行状态。
S202:判断线程是否因为IO、网络资源无法获取导致阻塞或者线程主动放弃CPU。
其中阻塞的方式有三种:
1)等待阻塞:运行的线程执行wait()方法,虚拟机会把该线程放入“等待池”中。线程进入此状态后,是不能自动唤醒的,必须依靠其他线程调用notify()或notifyAll()方法才能被唤醒,需要判断此状态。
2)同步阻塞:运行的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则虚拟机会把该线程放入“锁池”中,说明是锁竞争导致的阻塞,无须判断。
3)其他阻塞:运行的线程执行sleep()或join()方法,或者发出了I/O请求时,虚拟机会把该线程置为阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入就绪状态,需要判断此状态。
若是则执行S203,否执行S208。
S203:线程控制管理,对同一进程的各线程状态维护。
在本步骤后,可同时执行S204和S206。
S204:统计线程运行状态、时间片和优先级的信息,以及线程之间互相唤醒的信息。
S205:根据统计的信息形成策略。
如果发现两个线程频繁的互相唤醒,一个是处于runnable就绪状态,一个处于wait等待状态,则很大程度上是处于wait状态的线程是因为处于runnable的线程无法执行导致,提高runnable线程的优先级,优先获取资源。这样就可以根据统计的信息判断当前进程内部是否有处于runnable状态的低优先级的线程,阻塞了高优先级的线程,如果有,则需要调整低优先级的线程,使低优先级的线程优先获取资源。在执行完形成策略后执行S207。
S206:判断进程中是否有处于就绪状态的线程,如有则执行S207。
S207:线程处于就绪状态但优先级比较低,若同一进程的其他线程优先级高且处于等待状态,则执行策略库中策略进行优先级传递。
S208:等待系统资源分配运行的时间片进行线程处理。
S209:恢复被调整的至少一个线程的优先级优先级,待下一轮资源调度。
本发明实施例提供的调整线程优先级的方法,统计线程状态、运行时间、优先级、IO资源使用、网络资源使用等相关信息,这样就可以知道哪些线程之间有互相关联。如果一个线程由于IO、网络等系统资源处于wait状态,另外一个线程处于runnable状态(处于runnable状态的线程,是可以执行,但因为时间片用完无法执行),那表明处于runnable状态的线程很可能因为得不到时间片运行导致另外一个线程处于等待,这样可以把处于等待状态的优先级传递给runnable的线程,让runnable线程有时间片执行。通过这种方式加快资源释放,改善系统性能,避免如果资源锁被低优先级线程持有,在系统繁忙的情况下,低优先级进程会因为IO或者CPU资源获取不到执行时间而导致锁无法释放,阻止了其他关键进程的执行。
实施例三:
为了解决线程按照预设优先级进行执行,无法动态调整线程的优先级,系统性能较低的技术问题,本发明提出一种终端,下面结合本实施例对该终端进行说明:
请参见图3,图3为本发明实施例三的终端的组成示意图,该终端包括监控模块301、检测模块302、调整模块303;
监控模块301:用于监控至少一个线程的状态;
检测模块302,用于当监控模块301监控到至少一个线程处于预设阻塞状态时,检测同一进程中的各线程的运行状态和关联状态;。
调整模块303,用于根据各线程的运行状态和关联状态对同一进程中的一个或至少两个线程进行优先级调整。
在一些实施例中,至少一个线程可以包括:调用进程调度函数,且需要等待系统资源而暂停运行的线程;和/或;当CPU执行的当前指令中有中断或异常的进程,且所述当前指令中的中断或异常的进程优先级高于所述CPU执行下一条指令的进程优先级时,执行进程调度函数的线程。具体来说,是CPU在执行当前指令之后,在执行下一条指令之前,检测到所述当前指令执行后发生中断或异常,比较中断或异常的进程优先级与下一条指令的进程优先级,当中断或异常的进程优先级高于下一条指令的进程优先级时,则执行中断服务程序,在返回中断时,将执行进程调度函数的线程。其中调用的进程调度函数可以为schedule()。
而对于IO资源导致的线程调度,在调用进程调度schedule函数前可以设置IO的标志位,这时就可以判断线程是否是因为IO资源导致的状态切换。
线程使用网络资源时会调用套接字socket接口,在socket接口可以增加一些标志位,当线程状态切换时,就可以知道是否是因为网络资源导致出现的线程阻塞。
在一些实施例中,监控至少一个线程的状态可以包括:检测所述至少一个线程执行等待策略;或;检测到所述至少一个线程执行休眠策略,且休眠时间超过第一预设时长,所述至少一个线程由等待状态转入就绪状态;或;检测到所述至少一个线程执行等待调用当前线程执行完毕后继续执行下一线程的策略,且等待时间超过第二预设时长,所述至少一个线程由等待状态转入就绪状态;或;检测到所述至少一个线程发出获取输入或输出资源的请求,所述至少一个线程由等待状态转入就绪状态。其中等待策略为wait()方法,让当前线程暂停执行并释放对象锁标志。其中休眠策略为sleep()方法,使当前线程暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁。其中等待调用当前线程执行完毕后继续执行下一线程的策略为join()方法,使调用该方法的线程在此之前执行完毕,也就是等待调用该方法的线程执行完毕后再往下继续执行。
本实施例中的预设堵塞状态可以包括:因为系统资源无法获取而堵塞或线程主动放弃CPU。其中系统资源至少包括以下一种:网络资源、I/O资源。系统资源还可以包括内存、CPU资源等。
在一些实施例中,根据各线程的运行状态和关联状态对同一进程中的一个或至少两个线程进行优先级调整可以包括:确认各线程的优先级,根据各线程的运行状态、优先级调整各线程中至少一个线程的优先级。而根据所述各线程的运行状态、优先级来调整各线程中至少一个线程的优先级可以包括:当各线程中有处于就绪状态的第一线程,以及处于等待状态的第二线程时;确认第一线程与第二线程的优先级;当第一线程的优先级低于第二线程时,将第一线程的优先级调整至所述第二线程之前。
根据所述各线程的运行状态、优先级来调整各线程中至少一个线程的优先级还可以包括:
当各线程中有处于就绪状态的第三线程,以及处于等待状态的第四线程时;
确认第三线程与第四线程的优先级;
当第三线程的优先级低于第四线程,所述第三线程和所述第四线程互相唤醒时,将第三线程的优先级调整至所述第四线程之前。
具体来说,统计同一进程的各线程的信息,根据统计的信息判断当前进程内部是否有处于就绪runnable状态的线程阻塞了比就绪runnable状态的线程高优先级的线程。其中统计同一进程的各线程的信息包括:线程的运行状态、时间片、优先级以及线程之前互相唤醒的信息。其中如果发现两个线程频繁的互相唤醒,一个是处于runnable状态,一个处于wait状态,则很大程度上是处于wait状态的线程是因为处于runnable的线程无法执行导致,提高runnable线程的优先级,优先获取资源。这样就可以根据统计的信息判断当前进程内部是否有处于runnable状态的低优先级的线程,阻塞了高优先级的线程,如果有,则需要调整低优先级的线程,使低优先级的线程优先获取资源。其中统计的信息还可以使用操作系统的外部proc或者sys文件系统节点输出线程状态,调度信息,IO信息,网络信息等,外部应用可以根据这些信息生成智能策略输入给系统,让优先级传递更智能。
在一些实施例中,根据各线程的运行状态和关联状态对同一进程中的一个或至少两个线程进行优先级调整之后还可以包括:根据调整后的各线程的优先级,等待系统资源分配运行的时间片对各线程进行处理;恢复被调整的各线程的优先级。
本发明提供的终端,该终端包括监控模块,检测模块,调整模块,在监控模块监控到至少一个线程处于预设阻塞状态时,检测模块检测同一进程中的各线程的运行状态和关联状态,然后调整模块根据检测同一进程中的各线程的运行状态和关联状态对同一进程中的一个或至少两个线程进行优先级调整。动态调整了线程优先级,提高了系统性能。
实施例四:
本发明的调整线程优先级的方法可实现了线程优先级的动态调整,提高了系统性能,为了便于理解,下面结合一种应用场景对本发明的终端进行说明。
图4为本发明实施例四提供的终端的组成示意图,该终端包括:监控/处理模块401、状态管理模块402,智能策略模块403,优化模块404和恢复模块405。
其中监控/处理模块401监控线程运行状态。根据线程在执行过程中的不同状况,至少可以定义三种不同的运行状态,如图5所示。
运行态的线程会由于出现等待事件而进入等待状态,当等待事件结束之后等待状态的线程将进入就绪状态,而处理器的调度策略又会引起运行状态和就绪状态之间的切换,具体如下:
1)在内核中主动直接调用进程调度函数schedule(),当线程需要等待资源而暂时停止运行时,会把状态置于挂起,并主动请求调度,放弃cpu,这时需要监控此线程。
2)对于被动调用,CPU在执行了当前指令之后,在执行下一条指令之前,CPU要判断在当前指令执行之后是否发生了中断或异常,如果发生了CPU将比较到来的中断优先级和当前进程的优先级,如果新来任务的优先级更高,则执行中断服务程序,在返回中断时,将执行线程调度函数schedule,需要对此进行监控。
3)若由于IO资源导致的线程调度,在调用schedule函数前会设置IO的标志位,这时就可以判断线程是否是因为IO资源导致的状态切换。
4)线程使用网络资源时会调用socket接口,在socket接口可以增加一些标志位,当线程状态切换时,就可以知道是否是因为网络资源导致出现的线程阻塞。
状态管理模块402负责线程池中各种线程的当前状态,即wait、runnable、running、block,智能策略模块403是统计各个线程的运行状态和时间,并做出相应的方案;动态调整线程的优先级即优化模块404;恢复模块405即恢复线程的默认运行状态等待资源调度。
本发明通过前期的线程状态信息收集,根据运行状态和时间动态的统计信息,动态调整线程的优先级,最大程度调度资源及释放资源,这样可以很好的改善应用程序发生的资源等待时间,改善了影响收集性能最大的一个因素,尤其是对内存越小,安装的应用越多的手机,性能改善效果会越明显。尤其是内存较小的手机,可以大幅减少IO的发生提升手机的流畅性。本发明除了用于通讯终端产品,还有可能用于未来的车载产品、计算机、平板电脑等。
实施例五:
本实施例还提供了一种终端,参见图6所示,其包括处理器601、存储器602及通信总线603,其中:
通信总线603用于实现处理器601和存储器602之间的连接通信;
处理器601用于执行存储器602中存储的一个或者多个计算机程序,以实现上述实施例一或实施例二中的调整线程优先级的方法中的至少一个步骤。
本实施例还提供了一种计算机可读存储介质,该计算机可读存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、计算机程序模块或其他数据)的任何方法或技术中实施的易失性或非易失性、可移除或不可移除的介质。计算机可读存储介质包括但不限于RAM(Random Access Memory,随机存取存储器),ROM(Read-Only Memory,只读存储器),EEPROM(Electrically Erasable Programmable read only memory,带电可擦可编程只读存储器)、闪存或其他存储器技术、CD-ROM(Compact Disc Read-Only Memory,光盘只读存储器),数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。
本实施例中的计算机可读存储介质可用于存储一个或者多个计算机程序,其存储的一个或者多个计算机程序可被处理器执行,以实现上述实施例一或实施例二中的调整线程优先级的方法的至少一个步骤。
可见,本领域的技术人员应该明白,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件(可以用计算装置可执行的计算机程序代码来实现)、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。
此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、计算机程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。所以,本发明不限制于任何特定的硬件和软件结合。
以上内容是结合具体的实施方式对本发明实施例所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

Claims (10)

1.一种调整线程优先级的方法,所述方法包括:
监控至少一个线程的状态;
当监控到所述至少一个线程处于预设阻塞状态时,检测同一进程中的各线程的运行状态和关联状态;
根据所述各线程的运行状态和关联状态对所述同一进程中的一个或至少两个线程的各线程进行优先级调整。
2.如权利要求1所述调整线程优先级的方法,其特征在于,所述至少一种线程包括:
调用进程调度函数,且需要等待系统资源而暂停运行的线程;
和/或;
当CPU执行的当前指令中有中断或异常的进程,且所述当前指令中的中断或异常的进程优先级高于所述CPU执行下一条指令的进程优先级时,执行进程调度函数的线程。
3.如权利要求1所述调整线程优先级的方法,其特征在于,所述监控至少一个线程的状态包括:
检测所述至少一个线程执行等待策略,所述至少一个线程为等待状态;
或;
检测到所述至少一个线程执行休眠策略,且休眠时间超过第一预设时长,所述至少一个线程由等待状态转入就绪状态;
或;
检测到所述至少一个线程执行等待调用当前线程执行完毕后继续执行下一线程的策略,且等待时间超过第二预设时长,所述至少一个线程由等待状态转入就绪状态;
或;
检测到所述至少一个线程发出获取输入或输出资源的请求,所述至少一个线程由等待状态转入就绪状态。
4.如权利要求1-3任一项所述调整线程优先级的方法,其特征在于,
所述根据所述各线程的运行状态和关联状态对所述同一进程中的一个或至少两个线程进行优先级调整包括:
确认各线程的优先级,
根据所述各线程的运行状态、所述优先级调整各线程中至少一个线程的优先级。
5.如权利要求4所述调整线程优先级的方法,其特征在于,所述根据所述各线程的运行状态、优先级来调整各线程中至少一个线程的优先级包括:
当各线程中有处于就绪状态的第一线程,以及处于等待状态的第二线程时;
确认第一线程与第二线程的优先级;
当第一线程的优先级低于第二线程时,将第一线程的优先级调整至所述第二线程之前。
6.如权利要求4所述调整线程优先级的方法,其特征在于,所述根据所述各线程的运行状态、优先级来调整各线程中至少一个线程的优先级包括:
当各线程中有处于就绪状态的第三线程,以及处于等待状态的第四线程时;
确认第三线程与第四线程的优先级;
当第三线程的优先级低于第四线程,所述第三线程和所述第四线程互相唤醒时,将第三线程的优先级调整至所述第四线程之前。
7.如权利要求1-3任一项所述调整线程优先级的方法,其特征在于,所述根据所述各线程的运行状态和关联状态对所述同一进程中的一个或至少两个线程进行优先级调整之后还包括:
根据调整后的各线程的优先级,等待系统资源分配运行的时间片对各线程进行处理;
恢复被调整的各线程的优先级。
8.一种终端,所述终端包括监控模块、检测模块、调整模块;
所述监控模块,用于监控至少一个线程的状态;
所述检测模块,用于当所述监控模块监控到所述至少一个线程处于预设阻塞状态时,检测同一进程中的各线程的运行状态和关联状态;
所述调整模块,用于根据所述各线程的运行状态和关联状态对所述同一进程中的一个或至少两个线程进行优先级调整。
9.一种终端,所述终端包括处理器、存储器及通信总线;
所述通信总线用于实现处理器和存储器之间的连接通信;
所述处理器用于执行存储器中存储的一个或者多个计算机程序,以实现如权利要求1至7中任一项所述的调整线程优先级方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或者多个计算机程序,所述一个或者多个计算机程序可被一个或者多个处理器执行,以实现如权利要求1至7中任一项所述的调整线程优先级方法的步骤。
CN202011238906.9A 2020-11-09 2020-11-09 调整线程优先级的方法、终端及计算机可读存储介质 Pending CN114461353A (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN202011238906.9A CN114461353A (zh) 2020-11-09 2020-11-09 调整线程优先级的方法、终端及计算机可读存储介质
US18/036,145 US20230409391A1 (en) 2020-11-09 2021-11-03 Thread priority adjusting method, terminal, and computer-readable storage medium
PCT/CN2021/128287 WO2022095862A1 (zh) 2020-11-09 2021-11-03 调整线程优先级的方法、终端及计算机可读存储介质
EP21888559.8A EP4242842A4 (en) 2020-11-09 2021-11-03 EXECUTION THREAD PRIORITY SETTING METHOD, TERMINAL AND COMPUTER READABLE STORAGE MEDIUM

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011238906.9A CN114461353A (zh) 2020-11-09 2020-11-09 调整线程优先级的方法、终端及计算机可读存储介质

Publications (1)

Publication Number Publication Date
CN114461353A true CN114461353A (zh) 2022-05-10

Family

ID=81403904

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011238906.9A Pending CN114461353A (zh) 2020-11-09 2020-11-09 调整线程优先级的方法、终端及计算机可读存储介质

Country Status (4)

Country Link
US (1) US20230409391A1 (zh)
EP (1) EP4242842A4 (zh)
CN (1) CN114461353A (zh)
WO (1) WO2022095862A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116700817A (zh) * 2022-11-10 2023-09-05 荣耀终端有限公司 应用程序运行的方法及电子设备
CN117112241A (zh) * 2023-10-24 2023-11-24 腾讯科技(深圳)有限公司 调度优先级调整方法、装置、设备及存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5247675A (en) * 1991-08-09 1993-09-21 International Business Machines Corporation Preemptive and non-preemptive scheduling and execution of program threads in a multitasking operating system
AU731871B2 (en) * 1996-11-04 2001-04-05 Sun Microsystems, Inc. Method and apparatus for thread synchronization in object-based systems
US6567839B1 (en) * 1997-10-23 2003-05-20 International Business Machines Corporation Thread switch control in a multithreaded processor system
KR100714710B1 (ko) * 2006-02-22 2007-05-04 삼성전자주식회사 입출력 작업에 의해 블로킹된 스레드를 강제 종료하는 장치및 방법
CN109992436A (zh) * 2017-12-29 2019-07-09 华为技术有限公司 线程阻塞检测方法及设备
CN108509260B (zh) * 2018-01-31 2021-08-13 深圳市万普拉斯科技有限公司 线程识别处理方法、装置、计算机设备和存储介质

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116700817A (zh) * 2022-11-10 2023-09-05 荣耀终端有限公司 应用程序运行的方法及电子设备
CN116700817B (zh) * 2022-11-10 2024-05-31 荣耀终端有限公司 应用程序运行的方法及电子设备
CN117112241A (zh) * 2023-10-24 2023-11-24 腾讯科技(深圳)有限公司 调度优先级调整方法、装置、设备及存储介质
CN117112241B (zh) * 2023-10-24 2024-02-06 腾讯科技(深圳)有限公司 调度优先级调整方法、装置、设备及存储介质

Also Published As

Publication number Publication date
US20230409391A1 (en) 2023-12-21
WO2022095862A1 (zh) 2022-05-12
EP4242842A1 (en) 2023-09-13
EP4242842A4 (en) 2024-04-24

Similar Documents

Publication Publication Date Title
US8230430B2 (en) Scheduling threads in a multiprocessor computer
CN106557369B (zh) 一种多线程的管理方法及系统
CN109918141B (zh) 线程执行方法、装置、终端及存储介质
CN107491346B (zh) 一种应用的任务处理方法、装置及系统
US20090307696A1 (en) Thread management based on device power state
US8056083B2 (en) Dividing a computer job into micro-jobs for execution
WO2022095862A1 (zh) 调整线程优先级的方法、终端及计算机可读存储介质
CN111209110B (zh) 一种实现负载均衡的任务调度管理方法、系统和存储介质
US6820263B1 (en) Methods and system for time management in a shared memory parallel processor computing environment
US10467054B2 (en) Resource management method and system, and computer storage medium
US8413163B2 (en) Program control device including per-timeslot switching of thread execution
CN111897637B (zh) 作业调度方法、装置、主机及存储介质
CN112817772B (zh) 一种数据通信方法、装置、设备及存储介质
CN114461365A (zh) 一种进程调度处理方法、装置、设备和存储介质
CN114706663A (zh) 一种计算资源调度方法、介质及计算设备
US20220350666A1 (en) Resource allocation method, device and audio-visual playback terminal
AU2007261611A2 (en) Computer micro-jobs
CN110769046B (zh) 一种报文获取方法、装置、电子设备及机器可读存储介质
CN113434280A (zh) 基于时间动态调整调度间隔的方法
CN106484536B (zh) 一种io调度方法、装置和设备
CN116775320B (zh) 一种提高计算单元执行效率的方法、系统、设备及介质
CN113703939B (zh) 任务调度方法、系统及电子设备
WO2020168928A1 (zh) 事件处理方法、装置和设备
CN115599540A (zh) 一种多线程调用系统及方法
CN117573313A (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