CN100489788C - 一种线程唤醒控制方法和系统 - Google Patents
一种线程唤醒控制方法和系统 Download PDFInfo
- Publication number
- CN100489788C CN100489788C CNB2007101641440A CN200710164144A CN100489788C CN 100489788 C CN100489788 C CN 100489788C CN B2007101641440 A CNB2007101641440 A CN B2007101641440A CN 200710164144 A CN200710164144 A CN 200710164144A CN 100489788 C CN100489788 C CN 100489788C
- Authority
- CN
- China
- Prior art keywords
- thread
- dormancy
- task
- time
- time interval
- 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.)
- Active
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明提供了一种线程唤醒控制方法,包括步骤:线程唤醒运行,检测是否有待处理任务,当检测到有待处理任务时则执行所述待处理任务,处理完所述待处理任务后线程的休眠时间重置为预置的最小单元时间间隔Δt,否则;计算最近两次休眠的时间间隔之和Δat,置线程休眠的时间间隔为Δat。实现了当待执行任务多时,则服务线程休眠时间短,当待执行任务少时,则服务线程休眠时间长的目的,避免了系统资源的浪费,合理的解决了处理任务的效率和系统资源浪费之间的矛盾。
Description
技术领域
本发明涉及计算机领域,特别是涉及一种线程唤醒控制方法和系统。
背景技术
线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有部分在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤销另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在运行中呈现出间断性。线程具有就绪、阻塞和运行三种基本状态。线程是程序中一个单一的顺序控制流,它很好的解决了紧耦合共享主存的多处理机体系结构上的并行处理行为。线程休眠是指线程处于不可运行状态,在待定时间或事件激活后再恢复运行。
现有系统触发执行底层服务线程,一般有两种方式:
一种是被动式触发执行:外界达到一定条件时,触发执行服务线程,以执行所需服务。
另一种是主动式触发执行,设置固定的时间间隔,每间隔指定的时间后,都会去触发服务线程,以执行所需服务。
上面所述两种触发执行底层服务线程的方式有如下不足:
对于被动式触发执行:每次需要外界达到一定条件,才能触发执行服务线程,系统无法做到主动的操控,这种方式,只适合于系统完全不需要进行调节,只进行被动调用的简单场景,在多数复杂业务场景下都不能满足业务的需求。
对于设置固定的时间间隔主动式触发执行,系统能在指定时间间隔后主动的触发服务线程。这种方式系统虽然取得主动,但往往还不够合理,当服务线程的触发不是很有规律,有某个时间段内需要触发的服务线程特别多,而在某个时间段内需要触发的服务线程特别少时,采用这种设置固定的时间间隔主动式触发执行服务线程的方式也不能很好的满足,特别的,在触发服务线程少的时间段内会造成系统资源的大量浪费。在现实业务场景中,经常随着不同的条件,在不同时间去触发服务线程。尤其当系统对于性能比较关注,或者服务线程比较耗费资源时,这种固定时间间隔调度服务线程的方式并不合理,浪费了大量的系统资源。
发明内容
本发明所要解决的技术问题是提供一种线程唤醒控制的方法和系统,对服务线程以科学的方式主动进行触发、休眠,从而合理的使用系统资源,避免不必要的系统资源的耗费。
为了解决上述问题,本发明公开了一种线程唤醒控制方法,包括:
根据待执行任务的频率动态预置唤醒线程的时间间隔;
线程唤醒运行;
检测是否有待处理任务;
当检测到有待处理任务时则执行所述待处理任务,处理完毕后进入下一步;当检测到没有待处理任务时则直接进入下一步;
根据所述动态预置的唤醒线程的时间间隔动态加权设置线程的休眠时间。
优选的,所述动态加权设置线程的休眠时间的动态加权方式为成排列数的时间间隔。
优选的,所述动态加权设置线程的休眠时间的动态加权方式为固定时间间隔的倍数。
本发明还公开了另一种线程唤醒控制方法,包括:
线程唤醒运行;
检测是否有待处理任务;
当检测到有待处理任务时则执行所述待处理任务,处理完所述待处理任务后线程的休眠时间重置为预置的最小单元时间间隔△t,否则;
计算最近两次休眠的时间间隔之和△at,置线程休眠的时间间隔为△at。
其中,当线程第一次休眠时,所述最近两次休眠的时间间隔之和△at为预置的最小单元时间间隔△t。
当线程第二次休眠时,所述最近两次休眠的时间间隔都为预置的最小单元时间间隔△t,所述最近两次休眠的时间间隔之和△at为2△t。
优选的,还包括:
预置最大时间间隔△T,当最近两次休眠的时间间隔之和△at超出所述预设的最大时间间隔△T时,则所述线程的休眠时间重置为预置的最小单元时间间隔△t。
本发明还公开了一种线程唤醒控制系统,包括:
线程唤醒单元,用于线程唤醒运行;
任务检测单元,用于在线程唤醒运行后检测是否有待处理任务;
任务处理单元,用于在任务检测单元检测出具有待处理任务后完成待处理任务的处理;
休眠时间动态重置单元,用于在任务检测单元检测出没有待处理任务后或者在任务处理单元完成待处理任务的处理后,根据待处理任务的频率动态加权重置线程的休眠时间。
本发明还公开了另一种线程唤醒控制系统,包括:
线程唤醒单元,用于线程唤醒运行;
任务检测单元,用于在线程唤醒运行后检测是否有待处理任务;
任务处理单元,用于在任务检测单元检测出具有待处理任务后完成待处理任务的处理;
休眠时间重置单元,用于任务处理单元完成所述待处理任务的处理后,重置线程的休眠时间为预置的最小单元时间间隔△t;以及,在任务检测单元检测出没有待处理任务后,置线程休眠的时间间隔为最近两次休眠的时间间隔之和△at。
优选的,所述系统还包括:
判断单元,连结于任务检测单元和休眠时间重置单元之间,用于在任务检测单元检测出没有待处理任务后,判断最近两次休眠的时间间隔之和△at是否超出预设的最大时间间隔△T,并将判断结果传输至休眠时间重置单元作为重置休眠时间的依据。
与现有技术相比,本发明具有以下优点:
本发明所述方案采用主动式触发执行服务线程,根据待执行任务的频率动态预置唤醒线程的时间间隔,服务线程根据执行任务的频率间隔一定的时间间隔后执行任务,执行后空闲时服务线程进行休眠,从而降低对系统资源的耗费。
本发明所述的休眠时间间隔并非固定,而是根据待执行任务的频率使用动态加权设置时间间隔,动态地让线程进行合理的休眠和唤醒,从而使服务线程的每次休眠时间动态变化,更合理地使用系统资源,降低对系统资源的耗费
进一步,本发明的服务线程检测到没有待执行任务后,而使服务线程的休眠间隔具有记忆功能。即检测到有待处理任务后,处理完待执行任务后,线程的休眠时间重置为最小单元时间间隔,当检测到没有待执行任务后,每次的休眠时间间隔是最近两次休眠间隔时间之和,实现了当待执行任务多时,则服务线程休眠时间短,当待执行任务少时,则服务线程休眠时间长的目的,避免了系统资源的浪费,合理的解决了处理任务的效率和系统资源浪费之间的矛盾。
附图说明
图1是本发明一种线程唤醒控制方法第一实施例的流程图;
图2是本发明一种线程唤醒控制方法第二实施例的流程图;
图3是图2所示本发明一种线程唤醒控制方法第二实施例的流程图的具体示意图;
图4是本发明一种线程唤醒控制方法第三实施例的流程图;
图5是图4所示本发明一种线程唤醒控制方法第三实施例的流程图的具体示意图;
图6是本发明一种线程唤醒控制系统第一实施例的结构框图;
图7是本发明一种线程唤醒控制系统第二实施例的结构框图;
图8是本发明一种线程唤醒控制系统第三实施例的结构框图。
具体实施方式
本发明所述方案的应用环境,可以是在java中间件应用服务器中,也可以是在其他的应用服务器环境中,如web服务器。总之,在需要调用服务线程的场景中都可以应用本发明所述的技术方案,本发明不限定所述技术方案的应用环境。
本发明所述的服务线程可以是消息发送、邮件发送、动态处理上交文档或者其他的服务线程,对一些底层服务线程,不管是web服务器还是中间件应用服务器以及其他类型的服务器中的服务线程,如果满足以下条件,本发明所述技术方案都可以优选适用:
1、执行时会比较消耗系统资源,需要合理地唤醒/休眠线程,以节省系统资源。否则,如果执行时不耗费系统资源,则不断地循环执行时也不会耗费太多的系统资源;
2、任务处理并不需要同步执行,但有一定的效率要求。
消息发送、邮件发送这类服务,既不要求如电话通信那样的同步执行(发送/接收双方都必须同步才能进行),但又要求在一定的时间内完成,并且比较耗费系统资源,因此都可以优选应用本发明所述的技术方案。当然,本发明并不对所述技术方案的应用场景进行限定,可以得知,在其他的场景中应用本发明所述技术方案也是落入本发明的保护范围之内的。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
本发明提供的第一实施例,参照图1,示出了本发明一种线程唤醒控制方法的流程图,包括:
步骤101、根据待执行任务的频率动态预置唤醒线程的时间间隔。
步骤102、线程唤醒运行,进入步骤103。
步骤103、检测是否有待处理任务。
线程唤醒后,系统检测是否有待处理的任务,进入步骤104。
步骤104、当检测到有待处理任务时则执行所述待处理任务。
当检测到有待处理任务后,完成所述待处理任务的处理,进入步骤105;如果检测到没有待处理的任务,则直接进入步骤105。
步骤105、根据所述动态预置的唤醒线程的时间间隔动态加权设置线程的休眠时间。
当完成待处理任务的处理后或检测到没有待处理任务后,线程置休眠状态,线程休眠的时间间隔置为动态加权设置的时间间隔。所述线程的休眠时间可以根据待处理任务的频率自动加权设置,其加权方式可以是任意时间间隔,也可以是某个固定时间间隔,或者其倍数,还可以是成排列数的时间间隔。本发明并不对其进行限定。
本发明提供的第二实施例,参照图2,示出本发明一种线程唤醒控制方法的流程图,包括:
步骤201、线程唤醒运行。
对一些比较耗费系统资源的服务线程,如果所述线程一直处于运行状态,则会造成系统资源的大量浪费,为了节约系统资源,当所述服务线程在没有待处理任务时,让其处于休眠状态,即所述线处于不可运行状态,在待定时间或事件激活后再恢复运行,在本发明实施例中优选经过动态加权的时间间隔后唤醒运行。具体唤醒方式将在步骤203、204中详细描述。
步骤202、检测是否有待处理任务。
线程唤醒后,检测是否有待处理任务,有待处理任务则进入步骤203;无待处理任务则进入步骤204。
步骤203、当检测到有待处理任务时则执行所述待处理任务,处理完所述待处理任务后线程的休眠时间重置为预置的最小单元时间间隔△t。
当线程唤醒后检测到有待处理任务时,则完成所述待处理任务的处理,如消息的发送,邮件的发送。当所有待处理任务都完成后,线程处于空闲状态时,为节约系统资源,置所述线程为休眠状态,处于不可运行状态。为了使线程的休眠时间间隔具有记忆功能,科学、合理的安排线程的休眠时间,达到线程在待处理任务多时休眠时间短的目的,本发明实施例优选采取在线程完成待处理任务后重置所述线程的休眠时间为最小单元时间间隔△t。也即线程在此时的休眠时间最短,从而不会造成任务处理效率的低下,保证了任务的及时处理,不会因为节约资源而影响任务处理的效率,合理的解决了节约资源和任务高效处理的矛盾。
步骤204、计算最近两次休眠的时间间隔之和△at,置线程休眠的时间间隔为△at。
当线程唤醒后,系统检测到没有待处理任务时,表明此时间段内待处理任务量少。此时,为了达到线程在待处理任务少时休眠时间长,节约系统资源的目的,本发明实施例优选采取的休眠时间具有记忆功能,也即当检测到没有待处理任务后,则计算最近两次休眠的时间间隔之和△at,将此时线程的休眠时间间隔置为最近两次休眠的时间间隔之和△at,当线程休眠△at后再唤醒检测是否有待处理任务,有则进入步骤203,无待处理任务则进入步骤204,如此一直循环。
根据以上对本发明实施例的描述,可以知道,对于服务线程,当其待处理任务多时,则每次处理完待处理任务后重置线程的休眠时间为最小单元时间间隔△t,本发明对所述最小单元时间间隔△t没有限制,可以根据需要任意设置,如0.5s、1s、2s、5s......。这样保证每次都能高效率的处理完所有待处理任务。当没有待处理任务时,则线程每次的休眠时间为最近两次休眠时间之和,这样线程的休眠时间具有记忆功能,当没有待处理任务时,线程的休眠时间越来越长,浪费的系统资源越来越少,从而合理的解决了浪费系统资源和处理任务效率不高的矛盾。
进一步,如果线程是第一次休眠,则所述最近两次休眠的时间间隔之和△at就是预置的最小单元时间间隔△t。
如果线程是第二次休眠时,所述最近两次休眠的时间间隔都为预置的最小单元时间间隔△t,所述最近两次休眠的时间间隔之和△at为最小单元时间间隔△t的2倍。
下面以具体实例对本发明实施例进行一个详细的介绍,参照图3。
设置最小单元时间间隔△t为1s,待处理任务为消息的发送,当线程被唤醒后,检测是否有消息待发送,如果检测到有待发送消息,则发送全部待发消息,发送完全部待发消息后,重置线程休眠时间为1s。如果线程被唤醒后检测到没有待发送消息,则线程的休眠时间是最近两次休眠时间之和,如果线程是第一次休眠,则所述线程的休眠时间是1s。线程休眠1s后被唤醒,再次检测是否有待消息,如果有,则发送所有消息,发送完后重置线程的休眠时间为最小单元时间间隔,即1s。如果没有待发送消息,则线程的休眠时间置为2s。如此循环下去,易如得知:如果每次都有待发送消息,则每次线程的休眠时间都是最小单元时间间隔,即1s,如果一直都检测到没有待发送消息,则线程的休眠时间依次为1s、2s、3s、5s、8s、12s、20s、32s......,即每次线程的休眠时间都是最近两次线程的休眠时间之和,这样,当没有待发送消息时,线程的休眠时间具有记忆功能。当某次线程休眠被唤醒后检测到有待发送消息后,则在发送完待发送消息后重置线程的休眠时间为最小单元时间间隔,即1s。如线程休眠20s后,检测到有待发送消息,则下一次线程的休眠时间不是32s,而是1s,从而保证了发送消息的效率,不会因为靠牺牲效率而节约系统资源。合理的解决了系统资源的节约和高效发送消息的矛盾。
本发明提供的第三实施例,参照图4,示出本发明一种线程唤醒控制方法的流程图,包括:
步骤401、线程唤醒运行。
对一些比较耗费系统资源的服务线程,如果所述线程一直处于运行状态,则会造成系统资源的大量浪费,为了节约系统资源,当所述服务线程在没有待处理任务时,让其处于休眠状态,即所述线处于不可运行状态,在待定时间或事件激活后再恢复运行,在本发明实施例中优选经过动态加权的时间间隔后唤醒运行。具体唤醒方式将在步骤403、404中详细描述。
步骤402、检测是否有待处理任务。
线程唤醒后,检测是否有待处理任务,有待处理任务则进入步骤403;无待处理任务则进入步骤404。
步骤403、当检测到有待处理任务时则执行所述待处理任务,处理完所述待处理任务后线程的休眠时间重置为预置的最小单元时间间隔△t。
当线程唤醒后检测到有待处理任务时,则完成所述待处理任务的处理,如消息的发送,邮件的发送。当所有待处理任务都完成后,线程处于空闲状态时,为节约系统资源,置所述线程为休眠状态,处于不可运行状态。为了使线程的休眠时间间隔具有记忆功能,科学、合理的安排线程的休眠时间,达到线程在待处理任务多时休眠时间短的目的,本发明实施例优选采取在线程完成待处理任务后重置所述线程的休眠时间为最小单元时间间隔△t。也即线程在此时的休眠时间最短,从而不会造成任务处理效率的低下,保证了任务的及时处理,不会因为节约资源而影响任务处理的效率,合理的解决了节约资源和任务高效处理的矛盾。
步骤404、计算最近两次休眠的时间间隔之和△at。
步骤405、预置最大时间间隔△T,判断最近两次休眠的时间间隔之和△at和预置的最大时间间隔△T关系,所述最大时间间隔△T可以根据实际情况任意设置,如10s、30s、60s......,本发明并不对此进行限定:
步骤406、当最近两次休眠的时间间隔之和△at大于所述预设的最大时间间隔△T时,则所述线程的休眠时间重置为预置的最小单元时间间隔△t。
步骤407、如果所述最近两次休眠的时间间隔之和△at不大于所述预设的最大时间间隔△T时,则置线程休眠的时间间隔为△at。
根据以上对本发明实施例的描述,可以知道,对于服务线程,当其待处理任务多时,则每次处理完待处理任务后重置线程的休眠时间为最小单元时间间隔△t,本发明对所述最小单元时间间隔△t没有限制,可以根据需要任意设置,如0.5s、1s、2s、5s......。这样保证每次都能高效率的处理完所有待处理任务。当没有待处理任务时,则线程每次的休眠时间为最近两次休眠时间之和,这样线程的休眠时间具有记忆功能,当没有待处理任务时,线程的休眠时间越来越长,浪费的系统资源越来越少,并且设置一个最大时间间隔△T,当最近两次休眠的时间间隔之和△at大于所述预设的最大时间间隔△T时,则重置线程的休眠时间为最小单元时间间隔,这样避免了由于线程很长时间的休眠而不会被唤醒,检测待处理任务,不会造成处理任务效率的低下。
进一步,如果线程是第一次休眠,则所述最近两次休眠的时间间隔之和△at就是预置的最小单元时间间隔△t。
如果线程是第二次休眠时,所述最近两次休眠的时间间隔都为预置的最小单元时间间隔△t,所述最近两次休眠的时间间隔之和△at为最小单元时间间隔△t的2倍。
下面以具体实例对本发明实施例进行一个详细的介绍,参照图5。
设置最小单元时间间隔为1s,待处理任务为消息的发送,最大时间间隔△T为30s,当线程被唤醒后,检测是否有消息待发送,如果检测到有待发送消息,则发送全部待发消息,发送完全部待发消息后,重置线程休眠时间为1s。如果线程被唤醒后检测到没有待发送消息,则线程的休眠时间是最近两次休眠时间之和,如果线程是第一次休眠,则所述线程的休眠时间是1s。线程休眠1s后被唤醒,再次检测是否有待消息,如果有,则发送所有消息,发送完后重置线程的休眠时间为最小单元时间间隔,即1s。如果没有待发送消息,则线程的休眠时间置为2s。如此循环下去,易如得知:如果每次都有待发送消息,则每次线程的休眠时间都是最小单元时间间隔,即1s,如果一直都检测到没有待发送消息,则线程的休眠时间依次为1s、2s、3s、5s、8s、12s、20s、32s......,即每次线程的休眠时间都是最近两次线程的休眠时间之和,这样,当没有待发送消息时,线程的休眠时间具有记忆功能。当某次线程休眠被唤醒后检测到有待发送消息后,则在发送完待发送消息后重置线程的休眠时间为最小单元时间间隔,即1s。当一直检测到没有待发送消息,线程进行第8次休眠时,由于所述将要休眠的时间超过预设的最大时间间隔30s,则线程的第8次休眠时间不是32s,而是最小单元时间间隔,即1s。这样避免了由于线程很长时间的休眠而不会被唤醒,检测待处理任务,不会造成处理任务效率的低下。
本发明同时还公开了一种线程唤醒控制系统,参照图6,示出了本发明一种线程唤醒控制系统的实施例一的结构示意图。
本系统包括:线程唤醒单元601,用于线程唤醒运行;任务检测单元602,用于在线程唤醒运行后检测是否有待处理任务;任务处理单元603,用于在任务检测单元检测出具有待处理任务后完成待处理任务的处理;休眠时间动态重置单元604,用于在任务检测单元检测出没有待处理任务后或者在任务处理单元完成待处理任务的处理后,根据待处理任务的频率动态加权重置线程的休眠时间。如图6所示,上述各单元之间的连接关系如下:线程唤醒单元601和任务检测单元602相连;任务检测单元602分别与任务处理单元603和休眠时间动态重置单元604相连,以便根据任务检测情况进行相应的处理;任务处理单元603也和休眠时间动态重置单元604相连。
本系统的的工作原理和工作过程如下:
休眠结束后,线程唤醒单元601唤醒线程运行,线程唤醒后,任务检测单元602检测是否有待处理任务,如果有待处理任务,则调用任务处理单元603完成所述待处理任务的处理。然后调用休眠时间重置单元604动态重置线程的休眠时间,如果没有待处理任务,则直接调用休眠时间动态重置单元604动态重置线程的休眠时间。所述线程的休眠时间可以根据待处理任务的频率自动加权设置,其加权方式可以是任意时间间隔,也可以是某个固定时间间隔,或者其倍数,还可以是成排列数的时间间隔。本发明并不对其进行限定。
参照图7,示出了本发明一种线程唤醒控制系统的实施例二的结构示意图。
本系统包括:线程唤醒单元701,用于线程唤醒运行;任务检测单元702,用于在线程唤醒运行后检测是否有待处理任务;任务处理单元703,用于在任务检测单元检测出具有待处理任务后完成待处理任务的处理;休眠时间重置单元704,用于任务处理单元完成所述待处理任务的处理后,重置线程的休眠时间为预置的最小单元时间间隔△t;以及,在任务检测单元检测出没有待处理任务后,置线程休眠的时间间隔为最近两次休眠的时间间隔之和△at。其中,线程唤醒单元701和任务检测单元702相连;任务检测单元702、任务处理单元703和休眠时间动态重置单元704两两互相连接。
本系统的工作原理和工作过程如下:
休眠结束后,线程唤醒单元701唤醒线程运行,线程唤醒后,任务检测单元702检测是否有待处理任务,如果有待处理任务,则调用任务处理单元703完成所述待处理任务的处理。然后调用休眠时间重置单元704重置线程的休眠时间为最小单元时间间隔△t,如果没有待处理任务,则直接调用休眠时间重置单元704置线程的休眠时间为最近两次线程休眠时间之和△at。
参照图8,示出了本发明一种线程唤醒控制系统的实施例三的结构示意图。
本系统包括:线程唤醒单元801,用于线程唤醒运行;任务检测单元802,用于检测是否有待处理任务;任务处理单元803,用于完成待处理任务的处理;休眠时间重置单元804,当检测单元检测到有待处理任务时则在任务处理单元处理完所述待处理任务后,重置线程的休眠时间为预置的最小单元时间间隔△t;以及,在任务检测单元检测出没有待处理任务后,置线程休眠的时间间隔为最近两次休眠的时间间隔之和△at。
判断单元805,用于在任务检测单元检测出没有待处理任务后,判断最近两次休眠的时间间隔之和△at是否超出所述预设的最大时间间隔△T,并将判断结果传输至休眠时间重置单元作为重置休眠时间的依据。
如图8所示,上述各单元之间的连接关系如下:线程唤醒单元801和任务检测单元802相连;任务检测单元802和任务处理单元803连结,同时任务检测单元802也通过判断单元804和休眠时间动态重置单元804连接,任务处理单元803也和休眠时间动态重置单元804连接。
本系统的的工作原理和工作过程如下:
休眠结束后,线程唤醒单元801唤醒线程运行,线程唤醒后,任务检测单元802检测是否有待处理任务,如果有待处理任务,则调用任务处理单元803完成所述待处理任务的处理。然后调用休眠时间重置单元804重置线程的休眠时间为最小单元时间间隔△t,如果没有待处理任务,则计算最近两次休眠时间之和△at,并调用判断单元805判断最近两次休眠的时间间隔之和△at是否超出所述预设的最大时间间隔△T,如果最近两次休眠的时间间隔之和△at大于所述预设的最大时间间隔△T,则重置线程的休眠时间为最小单元时间间隔△t,如果最近两次休眠的时间间隔之和△at不大于所述预设的最大时间间隔△T,则置线程的休眠时间为最近两次休眠的时间间隔之和△at。
由于图6、图7、图8所示系统与图1、图2、图4所示方法一一对应,因此,系统中未详细介绍的部分参照方法中相应部分即可。
以上对本发明所提供的一种线程唤醒控制方法和系统,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1、一种线程唤醒控制方法,其特征在于,包括:
根据待执行任务的频率动态预置唤醒线程的时间间隔;
线程唤醒运行;
检测是否有待处理任务;
当检测到有待处理任务时则执行所述待处理任务,处理完毕后进入下一步;当检测到没有待处理任务时则直接进入下一步;
根据所述动态预置的唤醒线程的时间间隔动态加权设置线程的休眠时间。
2、如权利要求1所述的线程唤醒控制方法,其特征在于:
所述动态加权设置线程的休眠时间的动态加权方式为成排列数的时间间隔。
3、如权利要求1所述的线程唤醒控制方法,其特征在于:
所述动态加权设置线程的休眠时间的动态加权方式为固定时间间隔的倍数。
4、一种线程唤醒控制方法,其特征在于,包括:
线程唤醒运行;
检测是否有待处理任务;
当检测到有待处理任务时则执行所述待处理任务,处理完所述待处理任务后线程的休眠时间重置为预置的最小单元时间间隔△t,否则;
计算最近两次休眠的时间间隔之和△at,置线程休眠的时间间隔为△at。
5、如权利要求4所述的线程唤醒控制方法,其特征在于:
当线程第一次休眠时,所述最近两次休眠的时间间隔之和△at为预置的最小单元时间间隔△t。
6、如权利要求4所述的线程唤醒控制方法,其特征在于:
当线程第二次休眠时,所述最近两次休眠的时间间隔都为预置的最小单元时间间隔△t,所述最近两次休眠的时间间隔之和△at为2△t。
7、如权利要求4所述的线程唤醒控制方法,其特征在于,还包括:
预置最大时间间隔△T,当最近两次休眠的时间间隔之和△at超出所述预设的最大时间间隔△T时,则所述线程的休眠时间重置为预置的最小单元时间间隔△t。
8、一种线程唤醒控制系统,其特征在于,包括:
线程唤醒单元,用于线程唤醒运行;
任务检测单元,用于在线程唤醒运行后检测是否有待处理任务;
任务处理单元,用于在任务检测单元检测出具有待处理任务后完成待处理任务的处理;
休眠时间动态重置单元,用于在任务检测单元检测出没有待处理任务后或者在任务处理单元完成待处理任务的处理后,根据待处理任务的频率动态加权重置线程的休眠时间。
9、一种线程唤醒控制系统,其特征在于,包括:
线程唤醒单元,用于线程唤醒运行;
任务检测单元,用于在线程唤醒运行后检测是否有待处理任务;
任务处理单元,用于在任务检测单元检测出具有待处理任务后完成待处理任务的处理;
休眠时间重置单元,用于任务处理单元完成所述待处理任务的处理后,重置线程的休眠时间为预置的最小单元时间间隔△t;以及,在任务检测单元检测出没有待处理任务后,置线程休眠的时间间隔为最近两次休眠的时间间隔之和△at。
10、如权利要求9所述的线程唤醒控制系统,其特征在于,还包括:
判断单元,连结于任务检测单元和休眠时间重置单元之间,用于在任务检测单元检测出没有待处理任务后,判断最近两次休眠的时间间隔之和△at是否超出预设的最大时间间隔△T,并将判断结果传输至休眠时间重置单元作为重置休眠时间的依据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007101641440A CN100489788C (zh) | 2007-09-30 | 2007-09-30 | 一种线程唤醒控制方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007101641440A CN100489788C (zh) | 2007-09-30 | 2007-09-30 | 一种线程唤醒控制方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101122870A CN101122870A (zh) | 2008-02-13 |
CN100489788C true CN100489788C (zh) | 2009-05-20 |
Family
ID=39085213
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2007101641440A Active CN100489788C (zh) | 2007-09-30 | 2007-09-30 | 一种线程唤醒控制方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100489788C (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101923493A (zh) * | 2010-09-21 | 2010-12-22 | 深圳市华力特电气股份有限公司 | 一种任务调度方法及任务调度设备 |
US8989136B2 (en) * | 2012-02-14 | 2015-03-24 | Htc Corporation | Connection dormancy method and wireless communication device and computer readable recording medium |
US9465655B2 (en) | 2012-11-28 | 2016-10-11 | Htc Corporation | Method for managing threads using executing time scheduling technique and electronic device using the same method |
CN103853605B (zh) * | 2012-11-28 | 2017-06-09 | 宏达国际电子股份有限公司 | 线程管理方法及其电子装置 |
CN104951361B (zh) * | 2014-03-27 | 2018-10-09 | 阿里巴巴集团控股有限公司 | 一种定时任务的触发方法和装置 |
CN104977979B (zh) * | 2014-04-09 | 2019-03-19 | 珠海全志科技股份有限公司 | 时钟源切换方法和系统 |
CN105117277A (zh) * | 2015-08-26 | 2015-12-02 | 深圳市华验防伪科技有限公司 | 一种任务循环实现方法及系统 |
CN108319508B (zh) * | 2017-01-18 | 2020-10-20 | 中国移动通信集团公司 | Http同步请求转为异步处理的方法及服务器 |
CN109213577B (zh) * | 2017-06-30 | 2020-09-08 | 武汉斗鱼网络科技有限公司 | 一种线程睡眠的方法、装置及计算机设备 |
CN108810557A (zh) * | 2017-07-10 | 2018-11-13 | 北京视联动力国际信息技术有限公司 | 一种视频处理方法、装置、电子设备和存储介质 |
CN107590005A (zh) * | 2017-08-31 | 2018-01-16 | 武汉光谷信息技术股份有限公司 | 一种Redis内存队列中数据的获取方法及系统 |
CN108306816A (zh) * | 2017-12-30 | 2018-07-20 | 方正璞华软件(武汉)股份有限公司 | 一种邮件推送方法及系统 |
CN110769046B (zh) * | 2019-10-17 | 2022-11-18 | 新华三信息安全技术有限公司 | 一种报文获取方法、装置、电子设备及机器可读存储介质 |
CN112559160B (zh) * | 2021-02-19 | 2021-06-04 | 智道网联科技(北京)有限公司 | 地图引擎多线程的控制方法及装置 |
CN118034789A (zh) * | 2022-11-07 | 2024-05-14 | 蔚来移动科技有限公司 | 一种进程管理方法、电子设备及存储介质 |
-
2007
- 2007-09-30 CN CNB2007101641440A patent/CN100489788C/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN101122870A (zh) | 2008-02-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100489788C (zh) | 一种线程唤醒控制方法和系统 | |
CN102929720B (zh) | 一种节能作业调度系统 | |
US20140215236A1 (en) | Power-efficient inter processor communication scheduling | |
CN105487634B (zh) | 一种面向异构众核芯片的量化功耗控制方法 | |
CN101196836A (zh) | 一种控制看门狗电路复位的方法和装置 | |
CN108536531B (zh) | 一种基于单片机的任务调度和电源管理方法 | |
CN102073572B (zh) | 用于多核处理器的监控方法及系统 | |
CN102014021A (zh) | 一种控制数据链路通断的方法及装置 | |
CN104050137A (zh) | 一种异构操作系统中内核运行的方法及装置 | |
CN105608049A (zh) | 智能终端的cpu控制方法及控制装置 | |
WO2016115956A1 (zh) | 基于云计算的业务系统的调度方法及调度装置 | |
CN111200541B (zh) | 网络数据处理方法和装置 | |
CN103218264A (zh) | 基于线程池的多线程有限状态机切换方法及装置 | |
CN103092319A (zh) | 一种数据处理方法及装置 | |
CN106970835A (zh) | 固定优先级资源受限系统层次能耗优化方法 | |
CN103108039A (zh) | 一种低能耗集群环境下的服务质量保证方法 | |
CN101901159A (zh) | 一种多核CPU加载Linux操作系统的方法及系统 | |
CN105451311B (zh) | 一种休眠唤醒的同步方法及装置 | |
CN101943944A (zh) | 一种基于空闲历史信息的计算阵列节能方法 | |
CN116513966A (zh) | 起重机控制方法、装置、电子设备及起重机 | |
CN102438230A (zh) | 终端和数据业务处理方法 | |
CN103257894A (zh) | 一种管理程序的方法及电子终端 | |
CN106484074B (zh) | 非易失性存储装置、方法、计算机系统及待机或休眠实现方法 | |
CN101667116A (zh) | 一种手机操作系统及其睡眠后的控制方法 | |
CN104978006A (zh) | 一种多线程模式下的低功耗空闲等待方法 |
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 |