CN101324851A - 线程调度方法及其装置 - Google Patents

线程调度方法及其装置 Download PDF

Info

Publication number
CN101324851A
CN101324851A CNA2007101109887A CN200710110988A CN101324851A CN 101324851 A CN101324851 A CN 101324851A CN A2007101109887 A CNA2007101109887 A CN A2007101109887A CN 200710110988 A CN200710110988 A CN 200710110988A CN 101324851 A CN101324851 A CN 101324851A
Authority
CN
China
Prior art keywords
thread
threads
state
sets
ready state
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.)
Granted
Application number
CNA2007101109887A
Other languages
English (en)
Other versions
CN100578459C (zh
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.)
SnapTrack Inc
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN200710110988A priority Critical patent/CN100578459C/zh
Publication of CN101324851A publication Critical patent/CN101324851A/zh
Application granted granted Critical
Publication of CN100578459C publication Critical patent/CN100578459C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Multi Processors (AREA)

Abstract

本发明公开了一种应用于对称多处理器系统的线程调度方法及其装置。本发明方法包括以下步骤:接收线程调度请求,选择一个处于就绪状态的待执行线程,获取与所述待执行线程相关联的线程,并将获取到的线程中处于就绪状态的待执行线程设置为非就绪状态;将被选择的待执行线程分配给所述发出调度请求的处理器执行,并在所述被选择的线程执行完成时,将被设置为非就绪状态的与所述被选择的线程相关联的线程恢复为就绪状态。采用本发明,可减小对称多处理器系统对线程的自由调度所带来的争夺、同步资源开销,并且还可避免将线程指定到固定处理器上执行所造成的系统效率低,提高了系统运行效率。

Description

线程调度方法及其装置
技术领域
本发明涉及计算机领域,尤其涉及一种应用于对称多处理器系统的线程调度方法及其装置。
背景技术
进程通常被定义为一个正在运行的程序的实例,它是资源分配的单位。进程可以支持多个线程,一个进程中的多个线程共享相同的内存地址空间。
线程是进程中的实体,一个线程必须有一个父进程。线程不拥有系统资源,只有运行必须的一些数据结构;它与父进程的其它线程共享该进程所拥有的全部资源。线程可以创建和撤消线程,从而实现程序的并发执行。线程一般具有就绪、阻塞和运行三种基本状态。
某一线程的执行有可能依赖于其他线程的执行,或某一线程的开始需要等待其他线程的结束以获得资源的访问权限。从时间上看,这两个线程在时间上不能并行执行或很难并行执行。这样的线程被认为是有关联度的线程。
目前在对称多处理系统中,所有的处理器都可以平等地访问内存、I/O和外部中断。系统资源被系统中所有CPU共享,工作负载能够相对均匀地分配到所有可用处理器之上。在多处理器的系统中,不同线程可以同时在不同的中央处理器上运行,甚至当它们属于同一个进程时也是如此。例如,当对称多处理系统处理多线程的任务时,如果线程没有指定在某个处理器上运行,空闲的处理器会执行调度程序以取得可运行而暂时没有被运行的线程。大多数支持多处理器的操作系统都提供编程接口来让进程可以控制自己的线程与各处理器之间的关联度。对称多处理系统在处理有关联的多线程的任务时,需要解决多个处理器的相互通讯和协调,以及共享数据的同步保护。
目前的对称多处理器系统执行应用程序时,大多以线程为调度单位执行。目前的对称多处理器系统中,有两种线程调用方法。
在第一种线程调用方法中,不指定线程在哪个处理器上执行,由对称多处理器系统的调度程序对线程进行自由调度。相对空闲的处理器会从待执行线程队列取得线程执行。
由对称多处理器系统的调度程序自由调度线程,会出现多个相互关联的线程同时分别运行于不同的处理器上的情况。由于这些相互关联的线程的资源是共享的,在这些线程的执行过程中,不可避免地会发生处理器抢夺资源或等待其他线程释放资源,以执行本处理器上的线程。这样,在一个处理器上本来应该顺畅执行完的时间片内,增加了因其他处理器的抢夺而被打断的可能,导致线程切换的机会大大高于正常水平。因此,两个处理器同时处理关联度比较高的两个线程,由于抢夺、等待资源的开销,系统中如果还有其他任务等待执行,处理器就不能及时执行却把时间浪费在抢夺、等待资源上,从而降低了系统的总体效率。
为了解决上述问题,现有技术还提供了一种线程调度方法。在该方法中,通过绑定一组关联度较高的线程到某个固定的处理器上执行,使这些相互关联的线程从始至终绑定在该固定的处理器上执行。当有多组线程被绑定在相同的处理器上执行时,就有可能造成该处理器忙于处理这些线程,即使当前有空闲的处理器请求调度,系统也不会将这些已经被绑定在固定处理器上的线程调度到其它发出调度请求的处理器上执行。
由于无法预知处理器的运行与空闲的情况,因此将线程绑定在某个处理器上运行,容易发生上述被绑定的处理器很忙,而其他处理器却空闲的情况,因而无法发挥多处理器自由调度和并行处理的优势,会导致压力分布不均衡。
综上所述,目前的对称对处理器处理关联度比较高的多线程时,不能充分体现对称多处理器系统的优势,降低了系统效率。
发明内容
本发明实施例提供了一种线程调度方法,以提高对称多处理器系统的运行效率,该方法包括如下步骤:
接收线程调度请求,选择一个处于就绪状态的待执行线程,获取与所述待执行线程相关联的线程,并将获取到的线程中处于就绪状态的待执行线程设置为非就绪状态;
将被选择的待执行线程分配给所述发出调度请求的处理器执行,并在所述被选择的线程执行完成时,将被设置为非就绪状态的与所述被选择的线程相关联的线程恢复为就绪状态。
本发明的另一个实施例还提供了一种线程调度方法,该方法包括如下步骤:
根据线程间的关联关系将所有线程分别绑定于线程集合,所述线程集合中包含多个彼此关联的线程,或者包含一个与其它线程没有关联关系的独立线程;
接收线程调度请求,选择一个处于就绪状态的待执行线程集合,并将所述线程集合的状态设置为非就绪状态;
将被选择的待执行线程集合分配给所述发出调度请求的处理器执行,并在该线程簇中的线程执行完成时,将所述线程集合的状态设置为就绪状态。
本发明的另一个实施例提供了一种线程调度处理装置,该装置包括:调度单元、状态设置单元和状态恢复单元,其中
调度单元,用于接收线程调度请求,选择一个处于就绪状态的待执行线程,向所述状态设置单元发送状态设置指令,并将被选择的待执行线程分配给发出调度请求的处理器执行;在所述被选择的线程执行完成时,向所述状态恢复单元发送状态恢复指令;
状态设置单元,用于根据所述状态设置指令,获取与所述调度单元选择的待执行线程相关联的线程,并将获取到的线程中处于就绪状态的待执行线程的就绪状态设置为非就绪状态;
状态恢复单元,用于根据所述状态恢复指令,将所述状态设置单元设置为非就绪状态的与所述被选择的线程相关联的线程恢复为就绪状态。
本发明的另一个实施例还提供了一种线程调度装置,该装置包括:线程绑定单元、调度单元、状态设置单元和状态恢复单元,其中
线程绑定单元,用于根据线程间的关联关系将所有线程分别绑定于线程集合,并存储绑定信息;所述线程集合中包含多个彼此关联的线程,或者包含一个与其它线程没有关联关系的独立线程;
调度单元,用于接收线程调度请求,选择一个所述线程绑定单元设置的且处于就绪状态的线程集合,向所述状态状态设置单元发送状态设置指令,并将被选择的线程集合分配给发出调度请求的处理器执行;在所述被调度的线程集合执行完成时,向所述状态恢复单元发送状态恢复指令;
状态设置单元,用于根据所述状态设置指令,将所述被选择的线程集合的状态设置为运行状态;
状态恢复单元,用于根据所述状态恢复指令,将所述被选择的线程集合的状态设置为就绪状态。
本发明的上述实施例中,将线程调度到发出调度请求的处理器上执行,并将与其关联的就绪状态的线程设置为非就绪状态,使该被调度的线程执行过程中,与该被调度的线程关联的其他线程不会被调度到其他处理器上执行,从而减少了对称多处理器系统对线程的自由调度所带来的争夺、同步资源开销;并且,在该线程执行完成之后,将设置为非就绪状态的线程恢复为就绪状态,以使这些相互关联的线程可以被其他处理器调度执行,从而避免了将相关联的线程绑定到固定的处理器上执行所造成的系统压力分布不均衡,因此提高了系统效率。
附图说明
图1为本发明实施例一的线程调度流程示意图;
图2为本发明实施例的线程调度处理装置的结构示意图之一;
图3为本发明实施例的线程调度处理装置的结构示意图之二。
具体实施方式
下面结合附图对本发明实施例进行详细描述。
实施例一
本实施例描述了以线程为调度单位,并将相互关联的线程绑定于线程簇(也可称为线程集合,以下同),进行线程调度的流程。
参见图1,为本发明实施例一的线程调度流程示意图,具体步骤包括:
步骤101、当某个处理器因当前空闲而发出调度请求时,线程调度程序接收该处理器发出的调度请求,并根据线程调度规则,从待执行线程队列中选择一个线程。待执行线程队列中排列有处于就绪状态的线程。线程的调度规则,可以是根据调度方式或线程优先级进行调度。例如,线程调度程序从待执行线程队列中选择一个优先级最高的线程。
步骤102、调度程序获取与被选择的线程有关联关系的线程的信息。可以事先将彼此有关联关系的线程进行标识,如将彼此有关联关系的线程绑定为线程簇,并保存线程与线程簇的绑定关系。当调度程序选择一个线程进行调度时,调度程序查询线程与线程簇的绑定关系,获取该线程所在的线程簇,并从该线程簇中获取除该线程以外的其它线程的线程标识,如线程名称。
步骤103、调度程序将待执行线程队列中的线程名称与步骤102中获取到的线程名称进行比较,查找线程队列中是否具有相同名称的线程,如果有,则将查找到的线程的状态设置为非就绪状态,使该线程从待执行线程队列中被移除。
步骤104、处理器获得调度程序分配的线程后执行该线程,在该线程执行完毕时,调度程序将步骤103中被设置为非就绪状态的线程恢复为就绪状态,这些被恢复为就绪状态的线程又回到待执行线程队列中。
线程簇(thread bundle)是一个或多个线程的集合,一个线程簇由一个或多个有一定关联的线程组成。一个线程从属于一个线程簇。可根据需要创建一个或多个线程簇。线程簇中的每个线程仍然保持自己的优先级等属性。
线程簇可通过应用函数接口实现,例如:
创建一个线程簇bundle1,其中包含2个线程thread1和thread2,其实现过程为:
int ret;
bundle_t bundle1;
thread_t thread1,thread2;
ret=bundle_create(bundle1);
assert(0==ret);
printf(″Create bundle success.″);
ret=bundle_append(bundle1,thread1);
if(0==ret)printf(″thread1 add to bundle1.″);
ret=bundle_append(bundle1,thread2);
if(0==ret)printf(″thread2 add to bundle2.″);
......
当移出bundle1中的线程thread1时,执行:
bundle_remove(bundle1,thread1);
当删除bundle1时,执行:
bundle_destroy(bundle1);
删除线程簇只是解除对该线程簇中所包含的线程的绑定,因此当删除线程簇时,即使该线程簇中有线程,也不会因此而删除这些线程。
创建线程簇的目的是对相互关联的线程之间的关联关系进行标识,从而使调度程序能够通过查询线程与线程簇的绑定关系,获取与其中某个被调度的线程相关联的线程。
以下是对称多处理器系统调度线程的一个实例:
本实例中创建了1个线程簇bundle1,bundle1中包含3个相互关联的线程thread1、thread2和thread3,系统保存线程簇bundle1的信息,以及bundle1与thread1、thread2和thread3的对应关系。对称多处理器系统有2个处理器CPU1和CPU2。当前待执行线程队列中有thread1、thread2、thread3,以及其他线程待执行。
CPU1当前空闲,请求调度程序执行调度;
调度程序从待执行线程队列中选择线程thread1,分配给CPU1(可以根据优先级或调度方式选择待执行线程,此为现有技术,在此不详述),此时,thread1的状态从就绪状态转为运行状态,并被从待执行线程队列中移除。同时,调度程序从保存的线程簇与线程的对应关系中,获取到thread1所属的线程簇是bundle1,从bundle1中获取到与thread1关联的线程有thread2和thread3,并查询当前的待执行线程队列,查找到thread2和thread3,于是调度程序将待执行队列中的thread2和thread3的状态设置为阻塞状态,使thread2和thread3从待执行队列中被移除,例如将被移除的线程保存到被移除线程队列中。CPU1得到thread1后执行该线程。
在CUP1执行thread1的过程中,CUP2空闲,请求调度程序执行调度;
调度程序从待执行线程队列中选择线程分配给CPU2执行。由于在thread1执行期间内,与thread1关联的线程thread2和thread3已经被设置为阻塞状态而从待执行线程队列中移除,因此,在CPU2请求调度时,不可能将不在待执行线程队列中的thread2或thread3调度到CPU2上执行,因此避免了与thread1相关联的线程在同一时刻被不同的CPU执行。
thread1执行完毕后从运行状态转为就绪状态,进入到待执行线程队列,同时,调度程序将被设置为阻塞状态的thread2和thread3转为就绪状态,例如将被移除线程队列中的thread2和thread3的状态设置为就绪,使thread2和thread3重新进入到待执行线程队列。当任何一个CUP2请求调度时,可从待执行线程队列中获得thread1或thread2或thread3执行,至于选择哪个线程调度到CPU2,需要依据调度策略,此为现有技术,在此不详述。
由此可以看出,调度程序将与被调度的线程相关联的线程从待执行线程队列中移除,使某个处理器在执行该被调度的线程的时间段内,使其它处理器不可能得到与该被调度的线程相关联的线程执行,从而避免了处理器之间为了执行相互关联的线程而抢夺资源,减少了在执行线程过程中被打断的几率。并且,由于本实施例中并没有将线程簇绑定到固定的处理器上,因此,一旦被调度的线程调度完成后回到待执行线程队列,以及与该线程相关联的线程被恢复为就绪状态回到待执行线程队列中时,这些线程可被自由调度,而不会象现有技术中一样只能由固定的处理器执行,因而使系统压力分布均衡,提高了系统效率。
本实施例是通过将相互关联的多个线程绑定于线程簇实现线程调度,也可通过将相互关联的多个线程绑定于进程实现线程调度。将相互关联的线程绑定于进程,可通过应用函数接口实现,如通过应用函数接口实现在进程中创建或删除线程。当调度线程时,可通过与上述流程类似的方式,保证CPU执行该进程中的某个线程的过程中,其他CPU不会得到该进程中的任何线程执行,在该被调度的线程执行完毕后,该进程中的处于就绪状态的线程可以被自由调度。
实施例二
本实施例描述了将相互关联的线程绑定于线程簇,并以线程簇为调度单位进行线程调度的流程。
首先,以与实施例一相同的方式创建并设置线程簇,当线程之间不存在关联时,可将这些独立的线程分别独自设置为线程簇,以使所有线程都绑定在相应的线程簇中。线程簇中的线程保持各自的属性。
线程簇也具有属性,如优先级。线程簇的属性为该线程簇中处于就绪状态的最高优先级的线程的属性。调度程序可根据线程簇的优先级等属性调度线程簇,例如,优先级高的线程簇被优先调度,这样可保证优先级高的线程优先被执行。
线程簇也具有就绪、阻塞和运行等状态,并可在各状态之间进行转换。处于就绪状态的线程簇可排列在待执行线程簇队列中以等待调度程序的调度;处于运行状态或阻塞状态的线程簇不会出现在待执行线程簇队列中。当线程簇中的某个线程被执行的时间段内,该线程簇处于运行状态;当线程簇中的线程执行完毕后,该线程簇恢复到就绪状态。
以线程簇为调度单位进行调度的机制,与以线程为调度单位进行调度的机制相似。
以下为一个以线程簇为调度单位实现线程调度的实例。
例如,当前待执行线程簇队列中有两个待执行的线程簇bundle1和bundle2,系统中有两个处理器CPU1和CPU2。当CPU1空闲时发出调度请求,调度程序接收到调度请求后,从待执行线程簇队列中选择一个线程簇,例如,选择优先级高的bundle1,并分配给CPU1执行。此时,bundle1当前为运行状态,从待执行线程簇队列中移除。在CPU1执行线程簇bundle1的过程中,CPU2空闲,并请求调度,调度程序从待执行线程簇队列中选择一个线程簇,例如,选择当前优先级高的bundle2,分配给CPU2执行。
CPU在得到线程簇执行时,可依据该线程簇中的线程状态和执行方式,执行其中的线程,例如根据就绪状态线程的优先级,先执行优先级高的线程。在根据优先级或线程执行方式执行完该线程簇中的全部或部分就绪状态线程后,该线程簇的状态变为就绪状态,重新回到待执行线程簇队列中。
通过本实例可以看出,由于本实例中没有将线程簇与处理器进行绑定,因而空闲的处理器有可能获得任何一个处于就绪状态的线程簇执行,从而解决了现有技术中由于将一组线程绑定于固定的处理器所造成的压力分布不均衡的问题。
本发明实施例还提供了线程调度处理装置。
参见图2,为本发明实施例提供的线程调度处理装置的结构示意图,该线程调度处理装置适用于实施例一所述的流程。该装置包括线程绑定单元、调度单元、状态设置单元和状态恢复单元。
线程绑定单元用于将相互关联的线程绑定于线程簇,并存储绑定信息,如线程及其所属的线程簇的隶属关系等信息;
调度单元用于根据处理器发出的调度请求,从待执行线程队列中选择一个线程,如选择一个优先级最高的线程,并向状态设置单元发送状态设置指令,状态设置指令中可以携带被选择的线程的信息,如线程名称;
状态设置单元用于根据调度单元发出的状态设置指令,从线程绑定单元获取被选择的线程所属的线程簇,并获取该线程簇内除该被选择的线程以外的线程,然后,查询待执行线程队列中是否有与获取到的线程相同的线程,并将查询到的相同的线程设置为阻塞状态,使这些线程被移除待执行线程队列;
状态恢复单元用于将状态设置单元设置为非就绪状态的与被选择的线程相关联的线程恢复为就绪状态,使这些线程又回到待执行线程队列。
参见图3,为本发明实施例提供的线程调度处理装置的结构示意图,该线程调度处理装置适用于实施例二所述的流程。该装置包括线程绑定单元、调度单元、状态设置单元和状态恢复单元。
线程绑定单元用于将相互关联的线程绑定于线程簇,并存储绑定信息。线程绑定单元还为线程簇设置属性,将线程簇中处于就绪状态的优先级最高的线程的属性设置为该线程集合的属性,如将优先级最高的线程的优先级作为所属线程簇的优先级。对于与其它线程没有关联关系的独立线程,线程绑定单元将其分别独自绑定于线程簇,这样使所有线程都绑定于相应的线程簇中。
调度单元调度用于根据处理器发出的调度请求,从待执行线程簇队列中选择一个待执行线程簇,并向状态设置单元发送状态设置指令,指令中可以携带线程簇的信息。调度单元调度线程簇时,可根据线程簇的属性进行调度,如优先调度优先级高的线程簇执行。待执行线程簇队列中存储有处于就绪状态的线程簇,如果一个线程簇中具有处于就绪状态的线程,则该线程簇处于就绪状态。
状态设置单元用于根据调度单元发出的状态设置指令,将被调度的线程簇的状态设置为运行状态,该线程簇被从待执行线程队列中移除;
状态恢复单元用于获取线程簇的执行状态,并在获知被调度的线程簇中的线程执行完成时,将该线程簇的状态设置为就绪,使该线程簇又回到待执行线程簇队列。
处理器在得到线程簇执行时,可依据该线程簇中的线程状态和执行方式,执行其中的线程,例如根据就绪状态线程的优先级,先执行优先级高的线程。在根据优先级或线程执行方式执行完该线程簇中的全部或部分就绪状态线程后,该线程簇的状态变为就绪状态,重新回到待执行线程簇队列中。
综上所述,本发明实施例通过将相互关联的线程绑定于线程簇,使同一线程簇内的线程同一时刻只在一个处理器上运行,可以避免对称多处理器系统对线程的自由调度所带来的争夺、同步资源开销;同时,调度线程或线程簇时,仍采用自由调度的机制,即不将线程或线程集合绑定在指定的处理器上执行,避免由此带来的被绑定的处理器很忙,而其他处理器却空闲的请求发生,从而在处理相互关联的线程时,可发挥对称多处理器的优势,提高了系统运行效率。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (10)

1、一种线程调度方法,其特征在于,包括如下步骤:
接收线程调度请求,选择一个处于就绪状态的待执行线程,获取与所述待执行线程相关联的线程,并将获取到的线程中处于就绪状态的待执行线程设置为非就绪状态;
将被选择的待执行线程分配给所述发出调度请求的处理器执行,并在所述被选择的线程执行完成时,将被设置为非就绪状态的与所述被选择的线程相关联的线程恢复为就绪状态。
2、如权利要求1所述的方法,其特征在于,所述被选择的待执行线程和与其关联的线程绑定于线程集合;所述获取与所述待执行线程相关联的线程具体包括:
获取所述被选择的待执行线程所属的线程集合,获取绑定于所述线程集合的线程中,除所述被选择的待执行线程以外的其它线程。
3、如权利要求1所述的方法,其特征在于,将获取到的线程中处于就绪状态的待执行线程设置为非就绪状态具体包括:
在待执行线程队列中查询与所述获取到的线程相同的线程,并将查询到的线程的就绪状态设置为非就绪状态。
4、如权利要求1所述的方法,其特征在于,所述非就绪状态为阻塞状态。
5、一种线程调度方法,其特征在于,包括如下步骤:
根据线程间的关联关系将所有线程分别绑定于线程集合,所述线程集合中包含多个彼此关联的线程,或者包含一个与其它线程没有关联关系的独立线程;
接收线程调度请求,选择一个处于就绪状态的待执行线程集合,并将所述线程集合的状态设置为非就绪状态;
将被选择的待执行线程集合分配给所述发出调度请求的处理器执行,并在该线程簇中的线程执行完成时,将所述线程集合的状态设置为就绪状态。
6、如权利要求5所述的方法,其特征在于,所述处于就绪状态的线程集合为具有就绪状态线程的线程集合,所述线程集合的优先级为所述线程集合中处于就绪状态的最高优先级线程的优先级;所述选择一个处于就绪状态的待执行线程集合具体包括:
根据所述处于就绪状态的线程集合的优先级选择线程集合。
7、如权利要求5所述的方法,其特征在于,所述非就绪状态为运行状态。
8、一种线程调度处理装置,其特征在于,包括调度单元、状态设置单元和状态恢复单元,其中
调度单元,用于接收线程调度请求,选择一个处于就绪状态的待执行线程,向所述状态设置单元发送状态设置指令,并将被选择的待执行线程分配给发出调度请求的处理器执行;在所述被选择的线程执行完成时,向所述状态恢复单元发送状态恢复指令;
状态设置单元,用于根据所述状态设置指令,获取与所述调度单元选择的待执行线程相关联的线程,并将获取到的线程中处于就绪状态的待执行线程的就绪状态设置为非就绪状态;
状态恢复单元,用于根据所述状态恢复指令,将所述状态设置单元设置为非就绪状态的与所述被选择的线程相关联的线程恢复为就绪状态。
9、如权利要求8所述的线程调度处理装置,其特征在于,还包括:线程绑定单元,用于将相互关联的线程绑定于线程集合,并存储绑定信息;
所述状态设置单元从所述线程绑定单元获取所述被选择的线程所属的线程集合,获取绑定于所述线程集合的线程中除所述被选择的线程以外的其它线程,并将其中处于就绪状态的待执行线程设置为阻塞状态;
所述状态恢复单元将所述线程集合中被所述状态设置单元设置为阻塞状态的线程设置为就绪状态。
10、一种线程调度处理装置,其特征在于,包括:线程绑定单元、调度单元、状态设置单元和状态恢复单元,其中
线程绑定单元,用于根据线程间的关联关系将所有线程分别绑定于线程集合,并存储绑定信息;所述线程集合中包含多个彼此关联的线程,或者包含一个与其它线程没有关联关系的独立线程;
调度单元,用于接收线程调度请求,选择一个所述线程绑定单元设置的且处于就绪状态的线程集合,向所述状态状态设置单元发送状态设置指令,并将被选择的线程集合分配给发出调度请求的处理器执行;在所述被调度的线程集合执行完成时,向所述状态恢复单元发送状态恢复指令;
状态设置单元,用于根据所述状态设置指令,将所述被选择的线程集合的状态设置为运行状态;
状态恢复单元,用于根据所述状态恢复指令,将所述被选择的线程集合的状态设置为就绪状态。
CN200710110988A 2007-06-12 2007-06-12 线程调度方法及其装置 Active CN100578459C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200710110988A CN100578459C (zh) 2007-06-12 2007-06-12 线程调度方法及其装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200710110988A CN100578459C (zh) 2007-06-12 2007-06-12 线程调度方法及其装置

Publications (2)

Publication Number Publication Date
CN101324851A true CN101324851A (zh) 2008-12-17
CN100578459C CN100578459C (zh) 2010-01-06

Family

ID=40188398

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200710110988A Active CN100578459C (zh) 2007-06-12 2007-06-12 线程调度方法及其装置

Country Status (1)

Country Link
CN (1) CN100578459C (zh)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102414659A (zh) * 2009-04-28 2012-04-11 想象技术有限公司 用于在多线程微处理器中调度指令的发布的方法和设备
CN103336574A (zh) * 2013-07-23 2013-10-02 北京百度网讯科技有限公司 数据中心节能控制方法与装置
CN103984598A (zh) * 2013-02-07 2014-08-13 宏达国际电子股份有限公司 用于线程调度的方法以及系统
WO2015035870A1 (zh) * 2013-09-13 2015-03-19 华为终端有限公司 多cpu调度方法及装置
CN105528330A (zh) * 2014-09-30 2016-04-27 杭州华为数字技术有限公司 负载均衡的方法、装置、丛集和众核处理器
CN105824703A (zh) * 2016-03-30 2016-08-03 联想(北京)有限公司 一种线程管理方法和线程管理器
CN107924330A (zh) * 2015-09-25 2018-04-17 英特尔公司 用于集成的线程调度的技术
CN107967150A (zh) * 2017-12-19 2018-04-27 郑州云海信息技术有限公司 一种线程执行顺序确定方法、装置、设备及存储介质
CN108572862A (zh) * 2017-03-08 2018-09-25 华为软件技术有限公司 一种流程调度方法以及流程调度设备
CN108604192A (zh) * 2016-02-08 2018-09-28 微软技术许可有限责任公司 等待日志调用返回的线程转移
CN110162387A (zh) * 2019-04-09 2019-08-23 口口相传(北京)网络技术有限公司 线程调度方法、装置、计算机设备及计算机可读存储介质
CN110262839A (zh) * 2019-06-17 2019-09-20 腾讯科技(深圳)有限公司 一种处理器的调度方法、装置及存储介质
CN112667369A (zh) * 2020-06-08 2021-04-16 宸芯科技有限公司 一种线程调度方法、装置、存储介质及电子设备
CN113419841A (zh) * 2021-08-24 2021-09-21 北京每日优鲜电子商务有限公司 消息调度方法、装置、电子设备和计算机可读介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7159216B2 (en) * 2001-11-07 2007-01-02 International Business Machines Corporation Method and apparatus for dispatching tasks in a non-uniform memory access (NUMA) computer system

Cited By (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102414659A (zh) * 2009-04-28 2012-04-11 想象技术有限公司 用于在多线程微处理器中调度指令的发布的方法和设备
CN102414659B (zh) * 2009-04-28 2014-10-29 想象技术有限公司 用于在多线程微处理器中调度指令的发布的方法和设备
CN103984598A (zh) * 2013-02-07 2014-08-13 宏达国际电子股份有限公司 用于线程调度的方法以及系统
CN103984598B (zh) * 2013-02-07 2017-09-29 宏达国际电子股份有限公司 用于线程调度的方法以及系统
CN103336574A (zh) * 2013-07-23 2013-10-02 北京百度网讯科技有限公司 数据中心节能控制方法与装置
WO2015035870A1 (zh) * 2013-09-13 2015-03-19 华为终端有限公司 多cpu调度方法及装置
CN104460934A (zh) * 2013-09-13 2015-03-25 华为终端有限公司 多cpu调度方法及装置
CN105528330A (zh) * 2014-09-30 2016-04-27 杭州华为数字技术有限公司 负载均衡的方法、装置、丛集和众核处理器
CN105528330B (zh) * 2014-09-30 2019-05-28 杭州华为数字技术有限公司 负载均衡的方法、装置、丛集和众核处理器
CN107924330B (zh) * 2015-09-25 2022-04-08 英特尔公司 用于集成的线程调度的计算设备和方法
CN107924330A (zh) * 2015-09-25 2018-04-17 英特尔公司 用于集成的线程调度的技术
CN108604192A (zh) * 2016-02-08 2018-09-28 微软技术许可有限责任公司 等待日志调用返回的线程转移
CN108604192B (zh) * 2016-02-08 2021-11-19 微软技术许可有限责任公司 用于执行等待事件要被记录时的一个或多个任务的系统、方法及介质
CN105824703B (zh) * 2016-03-30 2019-03-29 联想(北京)有限公司 一种线程管理方法和线程管理器
CN105824703A (zh) * 2016-03-30 2016-08-03 联想(北京)有限公司 一种线程管理方法和线程管理器
CN108572862A (zh) * 2017-03-08 2018-09-25 华为软件技术有限公司 一种流程调度方法以及流程调度设备
CN108572862B (zh) * 2017-03-08 2021-12-03 华为技术有限公司 一种流程调度方法以及流程调度设备
CN107967150B (zh) * 2017-12-19 2021-10-15 郑州云海信息技术有限公司 一种线程执行顺序确定方法、装置、设备及存储介质
CN107967150A (zh) * 2017-12-19 2018-04-27 郑州云海信息技术有限公司 一种线程执行顺序确定方法、装置、设备及存储介质
CN110162387A (zh) * 2019-04-09 2019-08-23 口口相传(北京)网络技术有限公司 线程调度方法、装置、计算机设备及计算机可读存储介质
CN110262839B (zh) * 2019-06-17 2021-08-31 腾讯科技(深圳)有限公司 一种处理器的调度方法、装置及存储介质
CN110262839A (zh) * 2019-06-17 2019-09-20 腾讯科技(深圳)有限公司 一种处理器的调度方法、装置及存储介质
CN112667369A (zh) * 2020-06-08 2021-04-16 宸芯科技有限公司 一种线程调度方法、装置、存储介质及电子设备
CN113419841A (zh) * 2021-08-24 2021-09-21 北京每日优鲜电子商务有限公司 消息调度方法、装置、电子设备和计算机可读介质
CN113419841B (zh) * 2021-08-24 2021-11-23 北京每日优鲜电子商务有限公司 消息调度方法、装置、电子设备和计算机可读介质

Also Published As

Publication number Publication date
CN100578459C (zh) 2010-01-06

Similar Documents

Publication Publication Date Title
CN100578459C (zh) 线程调度方法及其装置
CN102317917B (zh) 热点域虚拟机cpu调度方法及虚拟机系统
US20050022173A1 (en) Method and system for allocation of special purpose computing resources in a multiprocessor system
CN112465129B (zh) 片内异构人工智能处理器
US8209690B2 (en) System and method for thread handling in multithreaded parallel computing of nested threads
JP5643190B2 (ja) 局所的集合内のタスクを汎用的集合に割り当てるための方法及びコンピュータ読取可能記録媒体
CN101958808B (zh) 一种服务于多网格接入的集群任务调度管理器
US8392920B2 (en) Parallel query engine with dynamic number of workers
JPH04195577A (ja) マルチプロセッサにおけるタスクスケジューリング方式
JP2007520825A (ja) 待機状態にあるプロセッサ実行リソースの共有
CN103729480A (zh) 一种多核实时操作系统多个就绪任务快速查找及调度方法
CN108920267A (zh) 任务处理装置
US20100083261A1 (en) Intelligent context migration for user mode scheduling
CN101414270A (zh) 硬件辅助的辅核任务动态优先级调度的实现方法
JP2007257257A (ja) マルチタスクシステムにおけるタスク実行環境切替え方法
US20130097382A1 (en) Multi-core processor system, computer product, and control method
US7823158B2 (en) Adaptive scheduling and management of work processing in a target context in resource contention
US9367349B2 (en) Multi-core system and scheduling method
CN1928811A (zh) 处理操作管理系统和方法
KR100400165B1 (ko) 처리 시스템 스케쥴링
CN100468342C (zh) 基于硬件资源的多核多中央处理器的执行绪分配方法
JPH11259318A (ja) ディスパッチ方式
CN102760073A (zh) 一种任务调度方法、系统及装置
Horowitz A run-time execution model for referential integrity maintenance
US20200097297A1 (en) System and method for dynamic determination of a number of parallel threads for a request

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20160504

Address after: American California

Patentee after: Snaptrack, Inc.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: Huawei Technologies Co., Ltd.