The present invention provides a method of sharing, semaphore thread pool based on: when receiving the thread pool identification function including the request, to determine whether the request queue is empty thread pool all thread pool system; the function request includes thread pool identity; if the request queue is empty thread the pool is, using the thread pool executes the function request task; if there is no request for you team empty thread pool, the request queue the function request to join the thread pool identifier corresponding to the thread pool. The invention also provides a system of shared signal based on the thread pool, which comprises a judging module, execution module and enqueue module. The invention can evenly allocate various functional resources, so that the memory resources of the processor can be effectively utilized to make the system more flexible.
【技术实现步骤摘要】
本专利技术涉及计算机
,尤其涉及一种基于信号量的线程池共享方法及系统。
技术介绍
线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。如果某个线程在托管代码中空闲(如正在等待某个事件),则线程池将插入另一个辅助线程来使所有处理器保持繁忙。如果所有线程池线程都始终保持繁忙,但队列中包含挂起的工作,则线程池将在一段时间后创建另一个辅助线程但线程的数目永远不会超过最大值。超过最大值的线程可以排队,但必须等到其他线程完成后才能启动。虽然线程池是构建多线程应用程序的强大机制,但使用它并不是没有风险的。在使用线程池时需注意线程池大小与性能的关系,注意并发风险、死锁、资源不足和线程泄漏等问题。目前,线程池的使用均为独立的,并不存在共享的情况。而且线程池只针对某一类功能提供,而这种方式的缺陷是线程池的独立使用,使得处理器内存资源不能得到有效利用。
技术实现思路
针对现有技术的缺陷,本专利技术提供一种基于信号量的线程池共享方法及系统,通过信号量控制的方式,通过适当的调度,使线程池在逻辑上成为一个整体,从而能够为多类功能提供线程池服务,使得处理器的内存资源得到有效的利用。第一方面,本专利技术提供一种基于信号量的线程池共享方法,所述
方法包括:当接收到包括线程池标识的功能请求后,判断系统的所有线程池中是否存在请求队列为空的线程池;若存在请求队列为空的线程池,则利用所述线程池执行所述功能请求的任务;若不存在请求队列位空的线程池,则 ...
【技术保护点】
一种基于信号量的线程池共享方法,其特征在于,所述方法包括:当接收到包括线程池标识的功能请求后,判断系统的所有线程池中是否存在请求队列为空的线程池;若存在请求队列为空的线程池,则利用所述线程池执行所述功能请求的任务;若不存在请求队列位空的线程池,则将所述功能请求加入所述线程池标识对应的线程池的请求队列。
【技术特征摘要】
1.一种基于信号量的线程池共享方法,其特征在于,所述方法包括:当接收到包括线程池标识的功能请求后,判断系统的所有线程池中是否存在请求队列为空的线程池;若存在请求队列为空的线程池,则利用所述线程池执行所述功能请求的任务;若不存在请求队列位空的线程池,则将所述功能请求加入所述线程池标识对应的线程池的请求队列。2.根据权利要求1所述的方法,其特征在于,所述当接收到包括线程池标识的功能请求后,判断系统的所有线程池中是否存在请求队列为空的线程池的步骤前,所述方法还包括:建立多个线程池;为每个线程池生成线程池标识,为每个线程池申请一个与所述线程池容量相等的信号量,并为每个线程池建立一个请求队列。3.根据权利要求2所述的方法,其特征在于,所述判断系统的所有线程池中是否存在请求队列为空的线程池,包括:根据线程池的信号量的值,判断系统的所有线程池中是否存在请求队列为空的线程池。4.根据权利要求3所述的方法,其特征在于,所述判断系统的所有线程池中是否存在请求队列为空的线程池,包括:判断线程池的信号量是否为0,若所述线程池的信号量不为0,则所述线程池的请求队列为空;若所述线程池的信号量为0,则所述线程池的请求队列不为空。5.根据权利要求1所述的方法,其特征在于,所述方法还包括:对所有线程池的请求队列进行检测,若检测到请求队列为空的线程池,则将请求队列最长的线程池中的任一未运行的任务出...
【专利技术属性】
技术研发人员:韩宁,
申请(专利权)人:北大方正集团有限公司,北京北大方正电子有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。