CN1295612C - 一种多线程系统中实现实时监控各线程状态的方法 - Google Patents
一种多线程系统中实现实时监控各线程状态的方法 Download PDFInfo
- Publication number
- CN1295612C CN1295612C CNB2004100098097A CN200410009809A CN1295612C CN 1295612 C CN1295612 C CN 1295612C CN B2004100098097 A CNB2004100098097 A CN B2004100098097A CN 200410009809 A CN200410009809 A CN 200410009809A CN 1295612 C CN1295612 C CN 1295612C
- Authority
- CN
- China
- Prior art keywords
- thread
- monitoring
- monitored
- state
- real time
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种多线程系统中实现实时监控各线程状态的方法。根据本发明的方法,在多线程系统中设定一线程为监控线程,其它线程为被监控线程,其中监控线程用于定时与被监控线程联系以获知每个线程的工作状态;每个被监控线程都响应监控线程的消息或通知,及时反馈本线程的工作状态和其他信息;监控线程维护一个每个线程状态的信息表;系统根据各线程的不同状态采取不同的策略。本发明通过将线程区分成监控线程与被监控线程两种,使得系统结构清晰,分工明确;而且,监控线程与被监控线程之间的协议简单实用,易于实现;另外,使用本发明的方法实现对线程的监控,可以更加高效地协调各线程协同工作,并对出现的问题及时快速地定位。
Description
技术领域
本发明涉及计算机领域的多线程技术,尤其涉及多线程系统中实现实时监控各线程状态的方法。
背景技术
随着科技的发展,在大型系统的开发过程中,经常需要使用到多线程技术。在一个复杂的多线程系统中,多个线程需要协同工作,这是个比较艰巨的任务。协调各线程共同工作的工作量在整个系统的工作量中占有相当大的比例,而且算法较复杂。由于在系统运行中,什么异常情况都有可能发生,假如一个线程死锁或发生异常,但是主控线程并不知道,而仍定时给该线程安排任务,这样就容易造成任务缓冲溢出,进而导致业务失败,降低整个系统的可靠性。这对于电信、银行等对可靠性要求非常高的系统来说是不可容忍的。
目前,尚未检索到论述并解决上述问题的公开文献。
发明内容
本发明的目的是提供一种多线程系统中实现实时监控各线程状态的方法,以使多线程系统更加高效地协调各线程协同工作,并对出现的问题及时快速地定位。
本发明所提供的多线程系统中实现实时监控各线程状态的方法,包括如下步骤:
步骤一:将多线程系统中的至少一个线程设定为监控线程,其它线程作为被监控线程,所述监控线程用于定时与被监控线程联系,以获知每个被监控线程的工作状态;
步骤二:所述监控线程维护每个被监控线程状态的信息表;
步骤三:系统获取各被监控线程的状态,并根据被监控线程的不同状态采取相应的处理方式。
根据本发明的上述方法,其中所述监控线程可以由系统的主控线程担当,也可以由一条线程专职作为监控线程。
根据本发明的上述方法,系统的主控线程通过设置回调函数或接收监控线程通知消息的方式获知各被监控线程的状态;或者系统的主控线程通过主动向监控线程索取当前的被监控线程的状态。
根据本发明的上述方法,系统针对被监控线程的不同状态采取相应的措施,如重起被监控线程、重新初始化被监控线程、不分发任务给被监控线程、重新起动系统或触发告警通知用户等。
根据本发明的上述方法,在所述步骤一,监控线程通过设置定时器定时触发点名事件,给所有被监控线程发送点名消息,并设置等待应答的超时长度;当被监控线程点名应答发生超时时,则监控线程累加该被监控线程超时次数,如果该被监控线程超时次数超过预设的次数,则监控线程将该被监控线程状态设为僵死状态,并通知系统;而当被监控线程在超时长度限度内点名应答而将包括本线程工作状态的信息反馈给监控线程时,则进入所述步骤二,监控线程根据收到的应答,设置并保存该被监控线程的状态;这时如果被监控线程状态发生变化,则在所述步骤三:监控线程将被监控线程的变化状态反馈给系统,系统对该被监控线程进行处理并将该被监控线程的超时次数清0。
根据本发明的上述方法,在所述步骤一,被监控线程在发生影响本线程状态的事件时,向监控线程发送报道消息。
根据本发明的上述方法,在所述步骤一,被监控线程在发生影响本线程状态的事件时,向监控线程发送报道消息;同时被监控线程监听来自监控线程定时发来的点名消息,在收到点名消息后,及时根据自身的状态给监控线程发送应答消息,在应答消息中带有表示该被监控线程的状态的参数。
根据本发明的上述方法,所述的被监控线程中有记录其状态是否发生异常的标志位;所述的应答消息中带有该标志位。
由于本发明将多线程区分为监控线程和被监控线程两种,使得多线程系统结构清晰,分工明确,采用这种方式,主控线程能够及时了解各线程的状态,从而可以更加高效地协调各线程协同工作,并对出现的问题及时快速地定位及采取相应的处理措施,提高了整个系统的可靠性。另外,由于监控线程和被监控线程之间的协议简单,所以本发明易于实现。
附图说明
图1示出了多线程系统中通过点名机制实现实时监控各线程状态的方法;
图2示出了多线程系统中通过报道机制实现实时监控各线程状态的方法。
具体实施方式
下面结合附图详细描述本发明。
首先需要在多线程的系统中确定两种类型的线程,一种是监控线程,一种是被监控线程。监控线程和被监控线程可以使用系统的任何线程担当。监控线程的主要任务是定时与被监控线程联系,获取所有被监控线程的状态和监听被监控线程的报道消息一般情况下用主控线程作为监控线程,也可以使用一个线程专职作为监控线程或使用任务中任何其他线程作为监控线程。而被监控线程一般是多线程系统中的工作线程。
点名是指监控线程向被监控线程主动发送消息,通过消息应答来获取被监控线程状态。报道是指被监控线程主动向监控线程报告自己的状态。其中点名由监控线程发起。报道由被监控线程发起。
图1示出了多线程系统中通过点名机制实现实时监控各线程状态的方法。在图1中,监控线程通过设置定时器定时触发点名事件,给所有被监控线程发送点名消息,并设置等待应答的超时长度。如果没有超时,则根据收到的应答设置并保存该被监控线程的状态,形成该被监控线程的状态信息表。如果被监控线程状态发生变化,则根据需要可以通过回调函数等方式反馈给系统,由系统根据情况采取不同的措施,并将该线程的超时次数清0。如果某个被监控线程点名应答发生超时,则累加该被监控线程超时次数,如果该被监控线程超时次数超过预设的次数,则将该被监控线程状态设为僵死状态,并通知系统。
图2示出了多线程系统中通过报道机制实现实时监控各线程状态的方法。被监控线程在发生影响本线程状态事件的时候,比如线程启动、终止、发生异常等,给监控线程发送报道消息。监控线程接收报道消息,并设置、保存该被监控线程的状态,形成该被监控线程的状态信息表。然后,监控线程将被监控线程的状态变化根据需要通过回调函数或发送消息等方式反馈给系统,由系统根据情况采取不同的措施。
另外,还可以将点名和报道机制同时使用。具体地,被监控线程在发生影响本线程状态事件的时候,比如线程启动、终止、发生异常等,给监控线程发送报道消息。同时,被监控线程一直监听来自监控线程的点名消息,收到点名消息后,及时根据自身的状态给监控线程发送应答消息,在应答消息中应该带有该线程状态的参数。如,在被监控线程中有记录是否发生异常的标志位,应答消息中带有此标志位表示该被监控线程是否发生过异常。监控线程接受到被监控线程所发送的应答消息或报道消息后,设置、保存该被监控线程的状态,并形成该被监控线程的状态信息表。然后,监控线程将被监控线程的状态变化根据需要通过回调函数或发送消息等方式反馈给系统,由系统根据情况采取不同的措施。
系统的主控线程可以通过设置回调函数或接收监控线程通知消息的方式获知各被监控线程的状态,也可以主动向监控线程索取当前的被监控线程的状态,并针对不同的状态采取相应的措施,包括:重起某些线程、重新初始化某些线程、不分发任务给某些线程、重新起动系统或触发告警通知用户等。
上述内容仅为本发明的最佳实施方案,其并非用来限制本发明的具体实施方式,凡根据本方法的主要发明构思而进行的修改和变动,均应属于本发明权利要求书所要求的保护范围。
Claims (9)
1、一种多线程系统中实现实时监控各线程状态的方法,其特征在于,包括如下步骤:
步骤一,将多线程系统中的至少一个线程设定为监控线程,其它线程作为被监控线程,所述监控线程用于定时与被监控线程联系,以获知每个被监控线程的工作状态;
步骤二,所述监控线程维护每个被监控线程状态的信息表;
步骤三,系统获取各被监控线程的状态,并根据被监控线程的不同状态采取相应的处理方式。
2、根据权利要求1所述的多线程系统中实现实时监控各线程状态的方法,其特征在于,所述监控线程为系统的主控线程。
3、根据权利要求1所述的多线程系统中实现实时监控各线程状态的方法,其特征在于,将一条线程专职作为监控线程。
4、根据权利要求1、2或3所述的多线程系统中实现实时监控各线程状态的方法,其特征在于,在所述的步骤三中,系统的主控线程通过设置回调函数或接收监控线程通知消息的方式获知各线程的状态;或者系统的主控线程通过主动向监控线程索取当前的被监控线程的状态。
5、根据权利要求1所述的多线程系统中实现实时监控各线程状态的方法,其特征在于,系统所采用的处理方式包括重起被监控线程、重新初始化被监控线程、不分发任务给被监控线程、重新起动系统或触发告警通知用户。
6、根据权利要求1所述的多线程系统中实现实时监控各线程状态的方法,其特征在于,
在所述步骤一中,监控线程通过设置定时器定时触发点名事件,给所有被监控线程发送点名消息,并设置等待应答的超时长度;
当被监控线程点名应答发生超时时,则监控线程累加该被监控线程超时次数,如果该被监控线程超时次数超过预设的次数,则监控线程将该被监控线程状态设为僵死状态,并通知系统;
而当被监控线程在超时长度限度内点名应答而将包括本线程工作状态的信息反馈给监控线程时,则进入所述步骤二,监控线程根据收到的应答,设置并保存该被监控线程的状态;这时如果被监控线程状态发生变化,则在所述步骤三,监控线程将被监控线程的变化状态反馈给系统,系统对该被监控线程进行处理并将该被监控线程的超时次数清零。
7、根据权利要求1所述的多线程系统中实现实时监控各线程状态的方法,其特征在于,在所述步骤一中,被监控线程在发生影响本线程状态的事件时,向监控线程发送报道消息。
8、根据权利要求1所述的多线程系统中实现实时监控各线程状态的方法,其特征在于,在所述步骤一中,被监控线程在发生影响本线程状态的事件时,向监控线程发送报道消息;同时被监控线程监听来自监控线程定时发来的点名消息,在收到点名消息后,及时根据自身的状态给监控线程发送应答消息,在应答消息中带有表示该被监控线程的状态的参数。
9、根据权利要求8所述的多线程系统中实现实时监控各线程状态的方法,其特征在于,所述的被监控线程中有记录其状态是否发生异常的标志位;所述的应答消息中带有该标志位。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2004100098097A CN1295612C (zh) | 2004-11-17 | 2004-11-17 | 一种多线程系统中实现实时监控各线程状态的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2004100098097A CN1295612C (zh) | 2004-11-17 | 2004-11-17 | 一种多线程系统中实现实时监控各线程状态的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1605987A CN1605987A (zh) | 2005-04-13 |
CN1295612C true CN1295612C (zh) | 2007-01-17 |
Family
ID=34763103
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004100098097A Expired - Fee Related CN1295612C (zh) | 2004-11-17 | 2004-11-17 | 一种多线程系统中实现实时监控各线程状态的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1295612C (zh) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100530107C (zh) * | 2007-03-02 | 2009-08-19 | 中国科学院声学研究所 | 基于io事件通知机制的单进程内容服务器装置及方法 |
CN101458640B (zh) * | 2007-12-14 | 2012-05-23 | 环达电脑(上海)有限公司 | 可监控多线程状态的系统及其监控方法 |
CN101256531B (zh) * | 2008-04-08 | 2011-04-06 | 中兴通讯股份有限公司 | 一种分析嵌入式设备实时性的方法 |
CN101882089B (zh) * | 2009-05-07 | 2013-05-08 | 中兴通讯股份有限公司 | 一种采用多线程处理业务会话应用的方法及装置 |
CN102117240B (zh) * | 2009-12-31 | 2016-01-20 | 腾讯科技(深圳)有限公司 | 一种获取进程阻塞信息的方法及装置 |
CN102222015B (zh) * | 2010-04-13 | 2016-04-27 | 三星电子(中国)研发中心 | 检测多线程程序中的死锁的方法及系统 |
CN102833120B (zh) * | 2011-06-14 | 2017-06-13 | 中兴通讯股份有限公司 | 一种快速自动化测试中处理网管服务器异常的方法及系统 |
CN102214098A (zh) * | 2011-06-15 | 2011-10-12 | 中山大学 | 一种基于WebKit浏览器引擎的动态页面数据采集方法 |
CN102843607A (zh) * | 2012-07-24 | 2012-12-26 | 四川长虹电器股份有限公司 | 机顶盒中进程状态监控方法 |
CN103176901A (zh) * | 2013-02-27 | 2013-06-26 | 深圳创维数字技术股份有限公司 | 一种嵌入式软件测试监控方法及系统 |
CN104065626B (zh) * | 2013-03-21 | 2018-03-23 | 杭州海康威视数字技术股份有限公司 | 网络摄像机登录状态的更新方法及装置 |
CN103686157B (zh) * | 2013-12-25 | 2015-10-14 | 乐视网信息技术(北京)股份有限公司 | 在云转码中提供报警的方法和系统 |
CN104636259B (zh) * | 2015-03-18 | 2020-05-22 | 厦门雅迅网络股份有限公司 | 一种基于运行期动态跟踪的函数执行超时与死锁检测方法 |
CN106708710A (zh) * | 2015-11-12 | 2017-05-24 | 高德软件有限公司 | 用于识别线程卡顿的方法及装置 |
CN105550028B (zh) * | 2015-12-25 | 2019-08-06 | Tcl集团股份有限公司 | 一种基于缓存锁的多任务时序执行方法及系统 |
CN105700938B (zh) * | 2016-01-15 | 2019-02-19 | 浪潮通用软件有限公司 | 一种多线程处理数据的方法及装置 |
CN106385341B (zh) * | 2016-08-31 | 2021-03-26 | 福建天晴数码有限公司 | 客户端监控线程的方法及其系统 |
CN106371976A (zh) * | 2016-08-31 | 2017-02-01 | 福建天晴数码有限公司 | 客户端及Web服务器监控线程的方法及其系统 |
CN107451257A (zh) * | 2017-07-31 | 2017-12-08 | 郑州云海信息技术有限公司 | 一种基于分布式文件系统的可维护性系统和方法 |
CN108415806A (zh) * | 2018-02-07 | 2018-08-17 | 深圳市亿联智能有限公司 | 一种高效率线程生命监测方式 |
CN114077222A (zh) * | 2020-08-21 | 2022-02-22 | 中国科学院沈阳自动化研究所 | 多线程交替实现增减材的设备控制系统 |
CN112181702B (zh) * | 2020-09-23 | 2023-06-06 | 北京紫光展锐通信技术有限公司 | 一种线程监测方法及装置 |
CN112379979A (zh) * | 2020-10-27 | 2021-02-19 | 航天信息股份有限公司 | 一种应用于税控服务的线程超时监控方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2355319A (en) * | 1999-10-14 | 2001-04-18 | Ibm | Job scheduler |
US6378125B1 (en) * | 1999-02-22 | 2002-04-23 | International Business Machines Corporation | Debugger thread identification points |
-
2004
- 2004-11-17 CN CNB2004100098097A patent/CN1295612C/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6378125B1 (en) * | 1999-02-22 | 2002-04-23 | International Business Machines Corporation | Debugger thread identification points |
GB2355319A (en) * | 1999-10-14 | 2001-04-18 | Ibm | Job scheduler |
Also Published As
Publication number | Publication date |
---|---|
CN1605987A (zh) | 2005-04-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1295612C (zh) | 一种多线程系统中实现实时监控各线程状态的方法 | |
Edrington et al. | Machine monitoring system based on MTConnect technology | |
CN105279603B (zh) | 可动态配置的大数据分析系统及方法 | |
US7076691B1 (en) | Robust indication processing failure mode handling | |
JP2014531087A (ja) | 工業的プロセスを管理するためのシステム及び方法 | |
CN104967537A (zh) | 一种报警信息推送方法及装置 | |
US8510755B2 (en) | Automatically re-starting services | |
CN109766198B (zh) | 流式处理方法、装置、设备及计算机可读存储介质 | |
CN102523115A (zh) | 一种基于动力环境系统的服务器监控系统 | |
CN113031870A (zh) | 一种集群系统动态管理方法、装置、存储介质及设备 | |
CN112055061A (zh) | 分布式消息处理方法和设备 | |
CN115811537A (zh) | 资源调整方法、装置、计算机设备和存储介质 | |
CN113535344A (zh) | 网络数据处理方法和装置、服务器及存储介质 | |
CN110798339A (zh) | 一种基于分布式任务调度框架的任务容灾方法 | |
US7552057B2 (en) | Method and apparatus for using process exceptions to provide instant notifications for distributed processes | |
CN109428745B (zh) | Jms消息转发方法、装置、电子设备和存储介质 | |
CN111669425B (zh) | 监控微服务接口的方法、存储介质 | |
CN112506154A (zh) | 一种生活污水处理站物联网监控系统 | |
CN1862496A (zh) | 一种节能并能优化系统资源的装置和方法 | |
CN113495705A (zh) | 大屏数据处理系统 | |
CN109586967A (zh) | 一种主动告警式安全监控系统 | |
CN114925283A (zh) | 推送任务的管理方法及系统、电子设备及介质 | |
Gaj | The concept of a multi-network approach for a dynamic distribution of application relationships | |
CN1300679C (zh) | 基于消息队列的报警信号处理方法 | |
CN106850283B (zh) | 一种基于事件驱动的云ac告警处理系统及方法 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20070117 Termination date: 20141117 |
|
EXPY | Termination of patent right or utility model |