CN105740326B - 浏览器的线程状态监测方法及装置 - Google Patents
浏览器的线程状态监测方法及装置 Download PDFInfo
- Publication number
- CN105740326B CN105740326B CN201610040003.7A CN201610040003A CN105740326B CN 105740326 B CN105740326 B CN 105740326B CN 201610040003 A CN201610040003 A CN 201610040003A CN 105740326 B CN105740326 B CN 105740326B
- Authority
- CN
- China
- Prior art keywords
- thread
- message
- browser
- monitoring
- user interface
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3051—Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/957—Browsing optimisation, e.g. caching or content distillation
Abstract
本申请公开了一种浏览器的线程状态监测方法及装置。该方法包括:响应于用户打开浏览器的操作,启动浏览器线程,创建并启动归属于浏览器线程的用户界面线程和监测线程,在用户界面线程中设置并启动定时器;其中,当在用户界面线程中启动定时器后,操作系统在消息队列中加入针对定时器的事件处理消息;用户界面线程从消息队列中依次获取浏览器线程对应的事件处理消息并进行处理;及,当所获取的事件处理消息为一针对定时器的事件处理消息时,触发用户界面线程向监测线程发送状态监测消息,其中,监测线程根据状态监测消息确定用户界面线程的状态。利用这些技术方案,能够提高用户界面线程监测的准确性。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种浏览器的线程状态监测方法及装置。
背景技术
用户在使用浏览器浏览信息时,在用户界面上显示有多个窗口,每个窗口和一个应用程序相对应。当用户操作窗口中的对象时,操作系统向相应的应用程序发送消息,告知该应用程序有事件发生。例如,用户单击鼠标、改变窗口尺寸、按下键盘上的某个键都会使操作系统发送一个消息给应用程序。然后,应用程序处理接收到的消息,执行消息所对应的事件。应用程序在获知消息以及处理消息时都有可能出现卡顿现象,此时用户界面没有任何响应,不再执行任何应用程序。
为了对浏览器的运行状态进行监测,现在技术通常采用埋点的方式,即若应用程序开始处理消息的时间点和处理消息结束的时间点之间的间隔过长,则认为出现了卡顿。但是,上述现有技术仅考虑到处理消息时出现的卡顿,无法统计执行消息处理之外的其他事件所引起的卡顿,因此,对浏览器的监测不够精细和全面,使得开发人员无法基于监测数据对浏览器性能进行有效的提升,从而降低了用户终端的资源利用率,影响了用户的体验。
发明内容
本发明提供了一种浏览器的线程状态监测方法及装置,能够提高监测浏览器中用户界面线程状态的准确性以及用户终端的资源利用率。
本发明的技术方案是这样实现的:
本发明提供了一种浏览器的线程状态监测方法,包括:
响应于用户打开所述浏览器的操作,启动浏览器线程,创建并启动归属于所述浏览器线程的用户界面线程和监测线程,在所述用户界面线程中设置并启动定时器;
其中,响应于用户对所述浏览器的任一操作,所述浏览器所基于的操作系统在针对浏览器线程的消息队列中加入对应于该操作的事件处理消息;当在所述用户界面线程中启动所述定时器后,所述操作系统在所述消息队列中加入针对所述定时器的事件处理消息;所述用户界面线程从所述消息队列中依次获取所述浏览器线程对应的事件处理消息并进行处理;及,
当所获取的事件处理消息为一针对所述定时器的事件处理消息时,触发所述用户界面线程向所述监测线程发送状态监测消息,其中,所述监测线程根据所述状态监测消息确定所述用户界面线程的状态。
本发明还提供了一种浏览器的线程状态监测装置,包括启动模块、创建模块、设置模块和触发模块,其中,
所述启动模块,用于响应于用户打开所述浏览器的操作,启动浏览器线程;启动归属于所述浏览器线程的用户界面线程和监测线程;启动定时器;
所述创建模块,用于创建所述用户界面线程和所述监测线程;
所述设置模块,用于在所述用户界面线程中设置所述定时器;
其中,响应于用户对所述浏览器的任一操作,所述浏览器所基于的操作系统在针对浏览器线程的消息队列中加入对应于该操作的事件处理消息;当在所述用户界面线程中启动所述定时器后,所述操作系统在所述消息队列中加入针对所述定时器的事件处理消息;所述用户界面线程从所述消息队列中依次获取所述浏览器线程对应的事件处理消息并进行处理;
触发模块,用于当所获取的事件处理消息为一针对所述定时器的事件处理消息时,触发所述用户界面线程向所述监测线程发送状态监测消息,其中,所述监测线程根据所述状态监测消息确定所述用户界面线程的状态。
本发明提供的浏览器的线程状态监测方法,通过在用户界面线程中设置并启动定时器,当所获取的事件处理消息为一针对定时器的事件处理消息时,触发用户界面线程向监测线程发送状态监测消息,以使监测线程根据状态监测消息确定用户界面线程的状态,能够监控用户界面线程由于任何原因导致的卡顿,而不仅限于现有技术中在处理消息这个过程中出现的卡顿,更加精确地监测用户界面线程的卡顿情况,从而能够进一步改善浏览器的性能,提高用户终端的资源利用率。
附图说明
图1为依据本发明一实施例的浏览器的线程状态监测方法的流程示意图;
图2为依据本发明一实施例的消息队列的组成示意图;
图3为依据本发明另一实施例的浏览器的线程状态监测方法的流程示意图;
图4为依据本发明一实施例的用户界面线程的状态数据的统计示意图;
图5为依据本发明一实施例的用户界面线程与监测线程的交互示意图;
图6为依据本发明一实施例的浏览器的线程状态监测装置的结构示意图;
图7为依据本发明另一实施例的浏览器的线程状态监测装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明应用于操作系统,包括开放式操作系统或者封闭式操作系统,用于监测浏览器中用户界面(UI)线程的运行状态。图1为依据本发明一实施例的浏览器的线程状态监测方法的流程示意图。如图1所示,包括如下步骤:
步骤101,响应于用户打开浏览器的操作,启动浏览器线程,创建并启动归属于浏览器线程的UI线程和监测线程。
当用户通过点击鼠标等方式打开一浏览器时,操作系统启动浏览器线程,同时,操作系统创建并启动归属于该浏览器线程的UI线程和监测线程。其中,UI线程能够响应操作系统的特定消息,包括界面消息、鼠标键盘消息、自定义消息等,通过消息循环的方式依次获取事件处理消息,再根据这个事件处理消息调用对应的消息处理对象或函数。监测线程则用于监测UI线程的运行状态,例如,监测UI线程处于卡顿状态时的持续时间。
步骤102,在UI线程中设置并启动定时器。
其中,浏览器所基于的操作系统具有一消息队列,其用于依次存储各线程对应的事件处理消息。响应于用户对浏览器的任一操作,操作系统在针对浏览器线程的消息队列中加入针对该操作的事件处理消息。当在UI线程中启动定时器后,操作系统在消息队列中加入浏览器线程下针对定时器的事件处理消息。
在一实施例中,使用SetTimer函数来设置定时器,并同时启动该定时器,即定时器开始计时。这种定时器是一种周期性的消息产生装置,在设置定时器时会为该定时器配置预设时长。每当定时器计时达到预设时长时,操作系统会生成一针对该定时器的事件处理消息,可称为定时消息,并在消息队列中加入该定时消息。通常,设置预设时长的具体数值时要综合考虑对UI线程监测的精细度和处理复杂度的折衷。
具体地,SetTimer函数可以表示为SetTimer(hwnd,nID,uiMsecInterval,NULL),其中hwnd是UI线程接收WM_TIMER消息的窗口句柄;nID是定时器ID,可以是一个非0数值;uiMsecInterval为定时器的预设时长,可以是一个32位无正负号整数,以毫秒为单位,例如,预设时长取值为200ms。每当定时器计时达到200ms时,操作系统会生成定时消息,如WM_TIMER消息,并向UI线程发送一次WM_TIMER消息,即在消息队列中加入该WM_TIMER消息。也就是说,在消息队列中加入连续两个定时消息的间隔为上述预设时长。
UI线程从消息队列中依次获取浏览器线程对应的事件处理消息并进行处理。如上所述,浏览器线程对应的事件处理消息包括与用户对浏览器的任一操作对应的事件处理消息,或者,针对定时器的事件处理消息,即定时消息。
在具体实现时,可以使用GetMessage函数从消息队列中依次获取事件处理消息,并将其放于指定的结构。当消息被取出后,就从消息队列中将其删除。在获取过程中,若消息队列为空,没有包含任何消息,GetMessage函数会一直等待,直到消息队列中至少有一条消息时才返回。例如,GetMessage函数可以表示为GetMessage(lpMsg,hWnd,wMsgFilterMin,wMsgFilterMax),其中,参数lpMsg为指向消息结构的指针,hWnd为取得事件处理消息的句柄,wMsgFilterMin指定被检索的最小消息值的整数,wMsgFilterMax指定被检索的最大消息值的整数。
UI线程使用GetMessage函数从消息队列中获取到一个事件处理消息后,可以调用DispatchMessage函数将该事件处理消息回传给操作系统,由操作系统调用相应的函数对事件处理消息进行处理。例如,若该事件处理消息对应于用户针对浏览器所做的一个操作,如单击鼠标、改变窗口尺寸、输入信息等,此时操作系统调用相应的窗口过程函数对消息进行处理。
步骤103,当所获取的事件处理消息为一针对定时器的事件处理消息时,触发UI线程向监测线程发送状态监测消息,其中,监测线程根据状态监测消息确定UI线程的状态。
若UI线程从消息队列中获取的事件处理消息为一定时消息,如WM_TIMER消息,那么操作系统触发UI线程向监测线程发送状态监测消息。例如,状态监测消息可以是一心跳包,调用PostMessage函数向监测线程发送心跳包。
在触发UI线程向监测线程发送状态监测消息时,获取发送状态监测消息时的时刻,即当前时间戳,然后在该状态监测消息携带该当前时间戳。监测线程接收到该状态监测消息后,解析并记录当前时间戳。然后计算当前时间戳与上次所记录的时刻之间的时间差,当时间差大于预设阈值时,确定UI线程处于卡顿状态,并记录该时间差。通常,上述预设阈值的数值大于上述定时器的预设时长。
需要指出的是,由于UI线程从消息队列中依次获取事件处理消息并进行处理,是一个串行过程,而在获取消息和处理消息的过程中都有可能出现卡顿现象。根据图1所述的实施例,通过在UI线程中设置并启动定时器,当从消息队列中获取到的事件处理消息为定时消息,则触发UI线程向监测线程发送状态监测消息。当在消息队列中获取到下一个定时消息时,则再次触发UI线程向监测线程发送状态监测消息,那么监测线程计算得到的时间差则用于获取并处理消息队列中排在这两个定时消息之间的所有其他事件处理消息。
图2为依据本发明一实施例的消息队列的组成示意图。如图2所示,在消息队列中依次存储有多个事件处理消息,按照时间的先后顺序由上到下排列。在定时消息n-1和定时消息n之间没有对应用户操作的其他事件处理消息,那么UI线程在获取到这两个定时消息后,先后向监测线程发送携带当前时间戳t-1和t0的心跳包。如上所述,UI线程从消息队列获取到这两个定时消息的间隔等于定时器的预设时长,因此,监测线程在接收到两次心跳包后计算得到的时间差t0-t-1也等于该预设时长。若预设时长为200ms,预设阈值为500ms,那么时间差t0-t-1<500ms,此时确定UI线程处于正常运行状态。
如图2所示,在消息队列中,在定时消息n和定时消息n+1之间有一个与用户点击鼠标所对应的事件处理消息x和与用户放大窗口对应的事件处理消息x+1,那么UI线程从消息队列中获取事件处理消息x,并返回操作系统以调用相应的窗口过程函数进行处理;然后,UI线程再从消息队列中获取事件处理消息x+1,也返回操作系统以调用相应的窗口过程函数进行处理;然后,UI线程从消息队列中获取到定时消息n+1,再向监测线程发送携带当前时间戳t1的心跳包。若UI线程获取并处理事件处理消息x以及获取并处理事件处理消息x+1花费的总时间为400ms,那么在监测线程处,计算出的时间差t1-t0=400ms。若预设阈值为500ms,那么t1-t0<500ms,此时确定UI线程处于正常运行状态。
按照串行的实现方式,UI线程接下来获取与用户输入信息对应的事件处理消息x+2并处理,然后UI线程再从消息队列中获取到定时消息n+2,向监测线程发送携带当前时间戳t2的心跳包。若UI线程在获取该事件处理消息x+2的过程中出现了卡顿,导致监测线程计算出t2-t1=800ms,即t2-t1>500ms,那么监测线程确定UI线程处于卡顿状态,记录该时间差t2-t1。
可见,根据上述实施例,若UI线程在获取事件处理消息时,或者处理消息时,或者在获取以及处理的过程中出现了卡顿,那么监测线程通过接收到的心跳包计算前后两个时刻的时间差,就可以判断出UI线程是否处于卡顿状态。相比于现有技术在UI线程中计算处理消息所需的时间,本申请通过在UI线程中设置并启动定时器,按照预设时长获取定时消息并触发发送心跳包,不考虑该消息是在获取、处理或者二者结合的过程中是否出现问题,因此,能够监控UI线程由于任何原因导致的卡顿,而不仅限于现有技术中在处理消息这个过程中出现的卡顿,从而能够更加精确地监测UI线程的卡顿情况,提高了监测的准确性。此外,通过设置定时器的预设时长和确定UI线程状态时的预设阈值可以控制监测的精细度。
图3为依据本发明另一实施例的浏览器的线程状态监测方法的流程示意图。如图3所示,包括如下步骤:
步骤301,响应于用户打开浏览器的操作,启动浏览器线程,创建并启动归属于浏览器线程的UI线程和监测线程。
步骤302,在UI线程中设置并启动定时器。
步骤303,在UI线程从消息队列中依次获取浏览器线程对应的事件处理消息之前,触发UI线程首次向监测线程发送状态监测消息,并为监测线程配置初始时刻。
具体地,将监测线程首次接收到的状态监测消息中携带的时刻作为初始时刻。
步骤304,UI线程从消息队列中依次获取浏览器线程对应的事件处理消息。
其中,步骤301、302和304分别与步骤101、102和103相对应,请参照上述描述,在此不再赘述。
步骤305,UI线程判断所获取的事件处理消息是否为一针对定时器的事件处理消息,若是,执行步骤306;若否,执行步骤307。
步骤306,触发UI线程向监测线程发送状态监测消息,以使监测线程根据状态监测消息确定UI线程的状态。
步骤307,当事件处理消息与用户对浏览器的任一操作对应时,返回操作系统以调用相应的窗口过程函数进行处理。
步骤308,响应于用户关闭浏览器的操作,触发监测线程将时间差发送给服务器,以使服务器基于时间差统计UI线程的状态数据。例如,UI线程的状态数据表示为所述时间差的概率密度函数(pdf)图。
图4为依据本发明一实施例的UI线程的状态数据的统计示意图。如图4所示的pdf曲线,横轴从0.5s(也就是上述预设阈值)开始有对应的百分比数值,在横轴取值为4s时出现一个极值(如虚线箭头所指),在竖轴上对应的百分比数值为5.66%,也就是说,UI线程卡顿的持续时间中4s所占的百分比为5.66%。
根据图3所示的实施例,监测线程根据接收到的状态监测消息得到大量的时间差数据,将这些数据上报给后台的服务器后,使得服务器根据这些数据进行统计分析,确定出现极值的一些异常数据,进而改善浏览器性能,提升用户终端的资源利用率以及用户使用浏览器的体验。
图5为依据本发明一实施例的UI线程与监测线程的交互示意图,并涉及这两个线程所在的客户端与服务器之间的交互。响应于用户打开浏览器的操作,操作系统启动浏览器线程,创建并启动了归属于浏览器线程的UI线程和监测线程后,如图5所示,包括如下步骤:
步骤501,在UI线程中设置并启动定时器。
步骤502,UI线程首次向监测线程发送携带当前时间戳的心跳包。
步骤503,监测线程根据首次接收到的心跳包,解析得到当前时间戳,配置初始时刻。
步骤504,UI线程从操作系统的消息队列中依次获取浏览器线程对应的事件处理消息,并根据所获取的事件处理消息进行相应处理。
当所获取的事件处理消息为一定时消息时,执行步骤505;当所获取的事件处理消息与用户对浏览器的一个操作对应时,返回操作系统以调用相应的窗口过程函数进行处理。
步骤505,当所获取的事件处理消息为一定时消息时,向监测线程发送心跳包,并返回步骤504从消息队列中获取下一个事件处理消息并处理。
步骤506,监测线程根据接收到的心跳包,计算与上次所记录的时刻之间的时间差,根据预设阈值和计算出来的时间差确定UI线程是否处于卡顿状态,当确定UI线程处于卡顿状态时,记录时间差。
步骤507,响应于用户关闭浏览器的操作,监测线程将记录的所有时间差发送给服务器。
当用户关闭浏览器时,响应于该操作,监测线程将自动上报所记录的所有数据,然后操作系统关闭UI线程和监测线程。等下次接收到用户打开浏览器的操作时,操作系统再创建这两个线程。
步骤508,服务器基于接收到的时间差统计分析UI线程的状态数据。
图6为依据本发明一实施例的浏览器的线程状态监测装置600的结构示意图。如图6所示,装置600包括启动模块610、创建模块620、设置模块630和触发模块640,其中,
启动模块610,用于响应于用户打开浏览器的操作,启动浏览器线程;启动归属于浏览器线程的用户界面线程和监测线程;启动定时器;
创建模块620,用于创建用户界面线程和监测线程;
设置模块630,用于在用户界面线程中设置定时器;其中,响应于用户对浏览器的任一操作,浏览器所基于的操作系统在针对浏览器线程的消息队列中加入对应于该操作的事件处理消息;当在用户界面线程中启动定时器后,操作系统在消息队列中加入针对定时器的事件处理消息;用户界面线程从消息队列中依次获取浏览器线程对应的事件处理消息并进行处理;
触发模块640,用于当所获取的事件处理消息为一针对定时器的事件处理消息时,触发用户界面线程向监测线程发送状态监测消息,其中,监测线程根据状态监测消息确定用户界面线程的状态。
在一实施例中,装置600还包括配置模块650,用于为监测线程配置初始时刻;
其中,状态监测消息携带有发送状态监测消息时的时刻,监测线程根据状态监测消息确定用户界面线程的状态包括:
记录发送状态监测消息时的时刻;
计算当前记录的时刻与上次所记录的时刻之间的时间差;
当时间差大于预设阈值时,确定用户界面线程处于卡顿状态,并记录时间差。
在一实施例中,触发模块640进一步用于:在用户界面线程从消息队列中依次获取浏览器线程对应的事件处理消息之前,触发用户界面线程向监测线程发送状态监测消息;
配置模块650用于:将监测线程首次接收到的状态监测消息中携带的时刻作为初始时刻。
在一实施例中,触发模块640进一步用于:响应于用户关闭浏览器的操作,触发监测线程将时间差发送给服务器,以使服务器基于时间差统计用户界面线程的状态数据。
在一实施例中,设置模块630进一步用于:为定时器设置预设时长;
操作系统在消息队列中加入浏览器线程下针对定时器的事件处理消息包括:
每当定时器计时达到预设时长时,操作系统生成一定时消息,并在消息队列中加入该定时消息。
图7为依据本发明另一实施例的浏览器的线程状态监测装置700的结构示意图。装置700可包括:处理器710,存储器720,端口730以及总线740。处理器710和存储器720通过总线740互联。处理器710可通过端口730接收和发送数据。其中,
处理器710用于执行存储器720存储的机器可读指令模块。
存储器720存储有处理器710可执行的机器可读指令模块。处理器710可执行的指令模块包括:启动模块721、创建模块722、设置模块723和触发模块724。其中,
启动模块721被处理器710执行时可以为:响应于用户打开浏览器的操作,启动浏览器线程;启动归属于浏览器线程的用户界面线程和监测线程;启动定时器;
创建模块722被处理器710执行时可以为:创建用户界面线程和监测线程;
设置模块723被处理器710执行时可以为:在用户界面线程中设置定时器;其中,响应于用户对浏览器的任一操作,浏览器所基于的操作系统在针对浏览器线程的消息队列中加入对应于该操作的事件处理消息;当在用户界面线程中启动定时器后,操作系统在消息队列中加入针对定时器的事件处理消息;用户界面线程从消息队列中依次获取浏览器线程对应的事件处理消息并进行处理;
触发模块724被处理器710执行时可以为:当所获取的事件处理消息为一针对定时器的事件处理消息时,触发用户界面线程向监测线程发送状态监测消息,其中,监测线程根据状态监测消息确定用户界面线程的状态。
在一实施例中,处理器710可执行的指令模块还包括配置模块725。配置模块725被处理器710执行时可以为:为监测线程配置初始时刻;
其中,状态监测消息携带有发送状态监测消息时的时刻,监测线程根据状态监测消息确定用户界面线程的状态包括:
记录发送状态监测消息时的时刻;
计算当前记录的时刻与上次所记录的时刻之间的时间差;
当时间差大于预设阈值时,确定用户界面线程处于卡顿状态,并记录时间差。
由此可以看出,当存储在存储器720中的指令模块被处理器710执行时,可实现前述各个实施例中启动模块、创建模块、设置模块、触发模块和配置模块的各种功能。
上述装置实施例中,各个模块及单元实现自身功能的具体方法在方法实施例中均有描述,这里不再赘述。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
另外,本发明的每一个实施例可以通过由数据处理设备如计算机执行的数据处理程序来实现。显然,数据处理程序构成了本发明。此外,通常存储在一个存储介质中的数据处理程序通过直接将程序读取出存储介质或者通过将程序安装或复制到数据处理设备的存储设备(如硬盘和或内存)中执行。因此,这样的存储介质也构成了本发明。存储介质可以使用任何类型的记录方式,例如纸张存储介质(如纸带等)、磁存储介质(如软盘、硬盘、闪存等)、光存储介质(如CD-ROM等)、磁光存储介质(如MO等)等。
因此,本发明还公开了一种存储介质,其中存储有数据处理程序,该数据处理程序用于执行本发明上述方法的任何一种实施例。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (13)
1.一种浏览器的线程状态监测方法,其特征在于,包括:
响应于用户打开所述浏览器的操作,启动浏览器线程,创建并启动归属于所述浏览器线程的用户界面线程和监测线程,在所述用户界面线程中设置并启动定时器;
其中,响应于用户对所述浏览器的任一操作,所述浏览器所基于的操作系统在针对浏览器线程的消息队列中加入对应于该操作的事件处理消息;当在所述用户界面线程中启动所述定时器后,每当所述定时器计时达到预设时长时,所述操作系统在所述消息队列中加入针对所述定时器的事件处理消息;所述用户界面线程从所述消息队列中依次获取所述浏览器线程对应的事件处理消息并进行处理;及,
每当所获取的事件处理消息为一针对所述定时器的事件处理消息时,触发所述用户界面线程向所述监测线程发送携带当前时间戳的状态监测消息,其中,所述监测线程根据所述状态监测消息,计算所述当前时间戳与上次所记录的时刻之间的时间差;
响应于用户关闭所述浏览器的操作,触发所述监测线程将所述时间差发送给服务器,以使所述服务器基于所述时间差,确定出现极值的异常数据,并改善所述浏览器的性能。
2.根据权利要求1所述的方法,还包括:
为所述监测线程配置初始时刻;
所述监测线程记录所述当前时间戳,当所述时间差大于预设阈值时,确定所述用户界面线程处于卡顿状态,并记录所述时间差。
3.根据权利要求2所述的方法,还包括:
在所述用户界面线程从所述消息队列中依次获取所述浏览器线程对应的事件处理消息之前,触发所述用户界面线程向所述监测线程发送所述状态监测消息;
所述为所述监测线程配置初始时刻包括:
将所述监测线程首次接收到的状态监测消息中携带的时刻作为初始时刻。
4.根据权利要求1所述的方法,还包括:
响应于用户关闭所述浏览器的操作,所述操作系统关闭所述用户界面线程和所述监测线程。
5.根据权利要求1所述的方法,其中,所述服务器将所述用户界面线程的状态数据表示为所述时间差的概率密度函数图。
6.根据权利要求1至5中任一项所述的方法,还包括:
为所述定时器配置所述预设时长;
所述操作系统在所述消息队列中加入针对所述定时器的事件处理消息包括:
每当所述定时器计时达到所述预设时长时,所述操作系统生成一定时消息,并在所述消息队列中加入该定时消息。
7.一种浏览器的线程状态监测装置,其特征在于,包括启动模块、创建模块、设置模块和触发模块,其中,
所述启动模块,用于响应于用户打开所述浏览器的操作,启动浏览器线程;启动归属于所述浏览器线程的用户界面线程和监测线程;启动定时器;
所述创建模块,用于创建所述用户界面线程和所述监测线程;
所述设置模块,用于在所述用户界面线程中设置所述定时器;
其中,响应于用户对所述浏览器的任一操作,所述浏览器所基于的操作系统在针对浏览器线程的消息队列中加入对应于该操作的事件处理消息;当在所述用户界面线程中启动所述定时器后,每当所述定时器计时达到预设时长时,所述操作系统在所述消息队列中加入针对所述定时器的事件处理消息;所述用户界面线程从所述消息队列中依次获取所述浏览器线程对应的事件处理消息并进行处理;
触发模块,用于每当所获取的事件处理消息为一针对所述定时器的事件处理消息时,触发所述用户界面线程向所述监测线程发送携带当前时间戳的状态监测消息,其中,所述监测线程根据所述状态监测消息,计算所述当前时间戳与上次所记录的时刻之间的时间差;响应于用户关闭所述浏览器的操作,触发所述监测线程将所述时间差发送给服务器,以使所述服务器基于所述时间差,确定出现极值的异常数据,并改善所述浏览器的性能。
8.根据权利要求7所述的装置,还包括:
配置模块,用于为所述监测线程配置初始时刻;
其中,所述监测线程记录所述所述当前时间戳,当所述时间差大于预设阈值时,确定所述用户界面线程处于卡顿状态,并记录所述时间差。
9.根据权利要求8所述的装置,其中,所述触发模块进一步用于:在所述用户界面线程从所述消息队列中依次获取所述浏览器线程对应的事件处理消息之前,触发所述用户界面线程向所述监测线程发送所述状态监测消息;
所述配置模块用于:将所述监测线程首次接收到的状态监测消息中携带的时刻作为所述初始时刻。
10.根据权利要求7所述的装置,其中,响应于用户关闭所述浏览器的操作,所述操作系统关闭所述用户界面线程和所述监测线程。
11.根据权利要求7至10中任一项所述的装置,其中,所述设置模块进一步用于:为所述定时器设置所述预设时长;
所述操作系统在所述消息队列中加入所述浏览器线程下针对所述定时器的事件处理消息包括:
每当所述定时器计时达到所述预设时长时,所述操作系统生成一定时消息,并在所述消息队列中加入该定时消息。
12.一种用户终端,其特征在于,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,实现如权利要求1至6中任一项所述的方法。
13.一种计算机可读存储介质,其特征在于,存储有计算机可读指令,所述计算机可读指令被至少一个处理器执行时,实现如权利要求1至6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610040003.7A CN105740326B (zh) | 2016-01-21 | 2016-01-21 | 浏览器的线程状态监测方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610040003.7A CN105740326B (zh) | 2016-01-21 | 2016-01-21 | 浏览器的线程状态监测方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105740326A CN105740326A (zh) | 2016-07-06 |
CN105740326B true CN105740326B (zh) | 2021-01-15 |
Family
ID=56246431
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610040003.7A Active CN105740326B (zh) | 2016-01-21 | 2016-01-21 | 浏览器的线程状态监测方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105740326B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108021496B (zh) * | 2016-10-28 | 2020-09-04 | 腾讯科技(深圳)有限公司 | 线程数据处理方法及装置 |
CN106598783A (zh) * | 2016-12-06 | 2017-04-26 | 广东欧珀移动通信有限公司 | 一种智能终端的显示控制方法、装置及智能终端 |
CN108345524B (zh) * | 2017-01-22 | 2021-12-14 | 腾讯科技(深圳)有限公司 | 应用程序监控方法及应用程序监控装置 |
CN107038107B (zh) * | 2017-03-09 | 2020-03-17 | 武汉斗鱼网络科技有限公司 | 一种获取应用卡顿信息的方法及装置 |
CN107273278B (zh) * | 2017-06-02 | 2019-10-25 | Oppo广东移动通信有限公司 | 卡顿确定方法、装置及终端 |
EP3617889B1 (en) * | 2017-06-27 | 2021-08-11 | Huawei Technologies Co., Ltd. | Stutter detection method and device |
CN109586989B (zh) * | 2017-09-28 | 2022-09-20 | 阿里巴巴集团控股有限公司 | 一种状态检查方法、装置及集群系统 |
CN109032812B (zh) * | 2018-06-29 | 2020-10-02 | Oppo(重庆)智能科技有限公司 | 一种移动终端及其进程间通信的限制方法、存储介质 |
CN109032814B (zh) * | 2018-06-29 | 2020-10-02 | Oppo(重庆)智能科技有限公司 | 一种移动终端及其进程间通信的监控方法、存储介质 |
CN109189664B (zh) * | 2018-07-24 | 2022-08-02 | 网宿科技股份有限公司 | 应用程序的信息采集方法及终端 |
CN109446094B (zh) * | 2018-11-05 | 2022-05-17 | 网易(杭州)网络有限公司 | 一种卡顿检测方法、装置、电子设备和存储介质 |
CN109361557B (zh) * | 2018-12-13 | 2022-05-06 | 上海二三四五网络科技有限公司 | 一种监测浏览器卡死的控制方法及控制装置 |
CN111625370B (zh) * | 2019-02-27 | 2023-10-10 | 杭州海康威视系统技术有限公司 | 一种消息推送方法、装置、电子设备及存储介质 |
CN110119305B (zh) * | 2019-05-13 | 2022-01-21 | 北京达佳互联信息技术有限公司 | 任务执行方法、装置、计算机设备及存储介质 |
CN117130809A (zh) * | 2023-03-09 | 2023-11-28 | 荣耀终端有限公司 | 一种应用运行状态的检测方法及设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102521104A (zh) * | 2011-12-13 | 2012-06-27 | 南京恩瑞特实业有限公司 | 高安全性系统运行进度的监控方法 |
CN102521044A (zh) * | 2011-12-30 | 2012-06-27 | 北京拓明科技有限公司 | 一种基于消息中间件的分布式任务调度方法及系统 |
CN103473087A (zh) * | 2013-08-30 | 2013-12-25 | 福建升腾资讯有限公司 | 一种多任务系统中软件开关机的关机控制方法 |
CN103856963A (zh) * | 2014-03-05 | 2014-06-11 | 浪潮通信信息系统有限公司 | 一种创建智能通信通道的方法 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7543195B2 (en) * | 2002-10-28 | 2009-06-02 | Netapp, Inc. | Method and system for managing time-out events in a storage area network |
CN1198407C (zh) * | 2003-07-08 | 2005-04-20 | 大唐移动通信设备有限公司 | 通信系统中实现高可用性(ha)的装置和方法 |
US20060200705A1 (en) * | 2005-03-07 | 2006-09-07 | International Business Machines Corporation | Method, system and program product for monitoring a heartbeat of a computer application |
US20090172117A1 (en) * | 2008-01-02 | 2009-07-02 | International Business Machines Corporation | Methods for using message queuing telemetry transport for sensor networks to support sleeping devices |
US8631109B2 (en) * | 2009-05-12 | 2014-01-14 | Hewlett-Packard Development Company, L.P. | System and method for dynamic control of network management traffic loads |
CN101599027B (zh) * | 2009-06-30 | 2013-02-13 | 中兴通讯股份有限公司 | 一种线程池管理方法及其系统 |
CN103092682B (zh) * | 2011-10-28 | 2016-09-28 | 浙江大华技术股份有限公司 | 异步网络应用程序处理方法 |
CN102546437B (zh) * | 2012-02-20 | 2014-10-22 | 南京邮电大学 | 一种面向物联网平台的套接字实现方法 |
CN102779066A (zh) * | 2012-06-14 | 2012-11-14 | 中国电子科技集团公司第四十一研究所 | 一种减少杀毒软件对测试仪器运行效率影响的方法 |
CN102779047B (zh) * | 2012-07-09 | 2016-07-06 | 哈尔滨工程大学 | 一种嵌入式软件支撑平台 |
CN102868736B (zh) * | 2012-08-30 | 2015-09-02 | 浪潮(北京)电子信息产业有限公司 | 一种云计算监控框架设计及实现方法及云计算处理设备 |
CN104281488B (zh) * | 2013-07-08 | 2018-01-19 | 博雅网络游戏开发(深圳)有限公司 | 服务器引擎的实现方法和系统 |
CN104899088B (zh) * | 2014-03-03 | 2019-04-12 | 腾讯科技(深圳)有限公司 | 一种消息处理方法及装置 |
CN104168446B (zh) * | 2014-06-30 | 2017-09-29 | 国家电网公司 | 基于消息调度和硬解码的音视频信号数模切换系统 |
CN104598241B (zh) * | 2015-01-27 | 2018-01-19 | 中国石油集团东方地球物理勘探有限责任公司 | 一种窗口监控方法及系统 |
CN104778078B (zh) * | 2015-04-29 | 2018-11-20 | 江苏中威科技软件系统有限公司 | 一种内容管理系统以及信息内容发布方法 |
-
2016
- 2016-01-21 CN CN201610040003.7A patent/CN105740326B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102521104A (zh) * | 2011-12-13 | 2012-06-27 | 南京恩瑞特实业有限公司 | 高安全性系统运行进度的监控方法 |
CN102521044A (zh) * | 2011-12-30 | 2012-06-27 | 北京拓明科技有限公司 | 一种基于消息中间件的分布式任务调度方法及系统 |
CN103473087A (zh) * | 2013-08-30 | 2013-12-25 | 福建升腾资讯有限公司 | 一种多任务系统中软件开关机的关机控制方法 |
CN103856963A (zh) * | 2014-03-05 | 2014-06-11 | 浪潮通信信息系统有限公司 | 一种创建智能通信通道的方法 |
Non-Patent Citations (2)
Title |
---|
Linux系统性能的远程监控;王中丹;《电子测试》;20141015(第20期);53-55 * |
基于多线程的环境监控系统下位机的设计;陈立定等;《工矿自动化》;20101210(第12期);13-16 * |
Also Published As
Publication number | Publication date |
---|---|
CN105740326A (zh) | 2016-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105740326B (zh) | 浏览器的线程状态监测方法及装置 | |
CN106681811B (zh) | 基于线程池的多线程调度方法及装置 | |
CN105389258B (zh) | 一种程序检测方法及装置 | |
CN107038107B (zh) | 一种获取应用卡顿信息的方法及装置 | |
JP2020512613A5 (zh) | ||
US8347021B1 (en) | Storing application messages | |
WO2017211226A1 (zh) | 展示媒体文件的方法、终端和存储介质 | |
CN107615250B (zh) | 一种针对应用的处理方法、装置及智能终端 | |
EP2819015B1 (en) | Method, terminal, and server for synchronizing terminal mirror | |
CN113835985A (zh) | 一种监测卡顿、分析卡顿原因的方法、装置及设备 | |
US9176783B2 (en) | Idle transitions sampling with execution context | |
CN112799925A (zh) | 数据采集方法、装置、电子设备和可读存储介质 | |
CN110851294B (zh) | 一种程序运行崩溃补救的方法及装置 | |
CN107704317B (zh) | 智能设备及其应用管理方法和具有存储功能的装置 | |
CN106445698B (zh) | 计步数据的获取方法及装置 | |
CN111949512A (zh) | 应用程序的卡顿检测方法、装置、终端及介质 | |
CN100589417C (zh) | 处理电信网管系统拓扑界面大量上报消息的系统和方法 | |
CN107729207B (zh) | 一种应用程序主线程的监控方法及装置 | |
US9317262B2 (en) | Identification of code synchronization points | |
CN116225820A (zh) | 监测中断状态的方法、装置、电子设备及存储介质 | |
CN113595814A (zh) | 消息延迟检测方法、装置、电子设备及存储介质 | |
CN107678945B (zh) | 一种网页应用阻塞的判断方法及装置 | |
CN113961442A (zh) | 一种卡顿异常监测方法、装置、终端设备及介质 | |
CN114115688A (zh) | 抑制显示抖动的方法及装置、电子设备、存储介质 | |
CN115964348A (zh) | 日志数据处理方法及装置、存储介质及电子终端 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20221122 Address after: 1402, Floor 14, Block A, Haina Baichuan Headquarters Building, No. 6, Baoxing Road, Haibin Community, Xin'an Street, Bao'an District, Shenzhen, Guangdong 518133 Patentee after: Shenzhen Yayue Technology Co.,Ltd. Address before: 2, 518044, East 403 room, SEG science and Technology Park, Zhenxing Road, Shenzhen, Guangdong, Futian District Patentee before: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. |
|
TR01 | Transfer of patent right |