一种多任务线程池调度方法和系统技术方案

技术编号:7487832 阅读:276 留言:0更新日期:2012-07-09 22:45
本发明专利技术涉及一种多任务线程池调度方法和系统。该方法和系统根据计算机实际CPU的个数创建任务线程,并根据任务线程的优先级不同建立线程池,然后根据需执行的任务线程的优先级选择与该优先级相对应的线程池中的线程,最后将任务算法与线程进行关联,启动线程调度算法执行任务。采用本发明专利技术所述的方法和系统,用户可以根据任务线程的优先级来进行线程池的创建,对线程进行分类管理。由于本发明专利技术中设置了线程的创建与回收装置,提高了线程的利用率,避免了资源浪费。

【技术实现步骤摘要】

本专利技术属于视频处理
,具体涉及一种多任务线程池调度方法和系统
技术介绍
在图像/视频后期计算机处理过程中,由于算法的复杂性,将导致节目制作的效率不高。但是随着计算机水平的不断提高,具有多核CPU的计算机不断普及,为提高图像 /视频后期处理时的系统的实时性提供了硬件支持。为了充分利用现有的硬件资源,一种可行的做法是尽可能启动多线程让CPU都工作起来,但是实际情况并不是启动的CPU越多越好,当线程数到达某个数值之后,随着新线程的加入,系统对单一任务的响应时间越来越长,越来越慢,而且如果再继续增多的话,貌似内存要溢出了,而且响应时间也变成了无限长,直到任何一个任务都无法被完成。所以,在实际应用中,需要根据实际情况合理配置线程才能达到最好的效果。线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。如果某个线程在托管代码中空闲(如正在等待某个事件),则线程池将插入另一个辅助线程来使所有处理器保持繁忙。如果所有线程池线程都始终保持繁忙,但队列中包含挂起的工作,则线程池将在一段时间后创建另一个辅助线程但线程的数目永远不会超过最大值。超过最大值的线程可以排队,但他们要等到其他线程完成后才启动。在在现有的图像/视频后期计算机处理过程中,还没有发现使用线程池的调度, 线程都是需要线程的时候就直接创建,使用完成后直接销毁线程了。但是线程的创建和销毁线程是需要代价的,创建一个新的线程的时间大概需要消耗系统几百毫秒的时间,另外还需要消耗内存等其他资源,总之就是反复的创建和销毁线程是不利的。
技术实现思路
针对现有技术中存在的缺陷,本专利技术的目的是提供一种多任务线程池调度方法和系统。该方法和系统在对图像/视频进行后期计算机处理过程中能够建立线程池并对所有线程进行分类管理,并通过建立线程的创建和回收机制,避免资源浪费,提高了线程的利用率。为达到以上目的,本专利技术采用的技术方案是一种多任务线程池调度方法,包括以下步骤(1)根据任务算法实现目的的不同,对任务进行分类,并设定任务线程的优先级;(2)根据任务线程的优先级为任务建立线程池;(3)根据需要执行的任务线程的优先级选择与该优先级相对应的线程池;(4)查看线程池中是否存在空闲的线程,若是,则进行任务算法与该线程的关联, 启动线程调度算法执行任务;若否,则创建新的线程进行任务算法与该线程的关联,启动线程调度算法执行任务;(5)将任务执行结束后的线程回收到线程池中。进一步,如上所述的多任务线程池调度方法,所述线程的个数是根据实际CPU的个数进行创建的。进一步,如上所述的多任务线程池调度方法,步骤(1)中所述任务线程的优先级是由用户来设定的。再进一步,如上所述的多任务线程池调度方法,所述线程池具有线程的创建与回收功能。更进一步,如上所述的多任务线程池调度方法,步骤中进行任务算法与线程的关联,启动线程调度算法执行任务是通过设置回调函数来实现的;所述回调函数是用户根据需要进行设置的,线程在被CPU调度时将通过回调该函数进行任务算法的执行,完成任务。一种多任务线程池调度系统,包括以下装置任务分类装置用于根据任务算法实现目的的不同,对任务进行分类,并进行任务线程的优先级的设定;线程池创建装置用于根据任务线程的优先级进行线程池的建立;线程池选择装置用于根据需执行的任务线程的优先级进行与该优先级相对应的线程池的选择;任务执行装置用于进行任务算法与线程的关联,启动线程调度算法进行任务的执行;线程回收装置用于将任务执行结束后的线程回收到线程池。再进一步,如上所述的多任务线程池调度系统,所述任务执行装置包括线程选择模块,所述线程选择模块用于查看线程池中是否存在空闲的线程,若是,则进行任务的执行;若否,则创建新的线程进行任务的执行。更进一步,如上所述的多任务线程池调度系统,所述任务执行装置的功能是通过设置回调函数来实现的;所述回调函数是用户根据需要进行设置的,线程在被CPU调度时将通过回调该函数进行任务算法的执行,完成任务。本专利技术的效果在于采用本专利技术所述的方法,在图像/视频后期计算机处理过程中,根据计算机实际CPU个数创建线程个数,并可以建立线程池并对所有线程进行分类管理,从而提高了线程的利用率。此外,本专利技术中设置了线程的创建与回收装置,提高了线程的利用率,避免了资源浪费。附图说明图1是本专利技术一种多任务线程池调度系统的结构图;图2是本专利技术一种多任务线程池调度方法的流程图。具体实施例方式下面结合具体实施方式和附图对本专利技术进行详细描述。如图1所示,为本专利技术一种多任务线程池调度系统的结构图,包括以下装置任务分类装置11 用于根据任务算法实现目的的不同,对任务进行分类,并进行任务线程的优先级的设定;线程池创建装置12 用于根据任务线程的优先级进行线程池的建立;线程池选择装置13 用于根据需执行的任务线程的优先级进行与该优先级相对应的线程池的选择;任务执行装置14 用于进行任务算法与线程的关联,启动线程调度算法进行任务的执行。其中,任务执行装置14包括线程选择模块,该线程选择模块用于查看线程池中是否存在空闲的线程,若是,则进行任务的执行;若否,则创建新的线程进行任务的执行。任务算法与线程的关联,启动线程调度算法进行任务的执行是通过设置回调函数来实现的,回调函数是用户根据需要进行设置的,线程在被CPU调度时将通过回调该函数进行任务算法的执行,完成任务。线程回收装置15 用于将任务执行结束后的线程回收到线程池。如图2所示,为基于图1中多任务线程池调度系统的一种多任务线程池调度方法的流程图,包括以下步骤步骤S21 对任务进行分类,设定任务线程的优先级;根据任务算法实现目的的不同,对任务进行分类,并设定任务线程的优先级。根据算法实现的目的不同分为不同类型的任务,每种任务可以由用户来设定该任务线程的优先级。例如可以分为特效处理任务,编码解码任务,用户通过定制线程优先级决定了每一类任务被CPU执行的优先度。线程是进程(应用程序)的一个实体,是CPU调度和分派的基本单位。假如系统有一个CPU,有两个任务需要处理,如果单线程处理,任务2需要等待任务1结束之后才能开始处理,如果任务1有50%的时间处于锁定状态,那CPU就有50%的空闲时间被浪费掉了。假设有两个任务需要处理,如果有两个线程,当任务1被锁定的时候,任务2就可以独占CPU,这样就可以提高两个任务的执行效率。如果是每个任务就创建新的线程,好像是线程越多,CPU的利用率就越高,好像会处理的越来越快的样子。但是事情恰恰相反,当线程数到达某个数值之后,随着新线程的加入,系统对单一任务的响应时间越来越长,越来越慢。本专利技术将根据系统运行的计算机实际CPU数量,产生相应数量的线程数目;任务将负责将这些线程与相应的CPU建立联系,即所有线程将运行在CPU上,保证所有CPU为一个任务都运行来,这样就充分利用硬件资源提高了算法的执行效率。步骤S22:建立线程池;任务线程的优先级为任务建立线程池,在执行任务时,用户可以通过线程优先级作为参数拿出一类线程池。在现有的图像/视频后期计算机处理过程中,线程的使用都是需要的时候就直接创建线程,任务完成后就将本文档来自技高网
...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:郑鹏程徐进见良刘铁华
申请(专利权)人:新奥特北京视频技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术