CN111552567A - 一种线程管理方法、装置、电子设备及存储介质 - Google Patents

一种线程管理方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN111552567A
CN111552567A CN202010344829.9A CN202010344829A CN111552567A CN 111552567 A CN111552567 A CN 111552567A CN 202010344829 A CN202010344829 A CN 202010344829A CN 111552567 A CN111552567 A CN 111552567A
Authority
CN
China
Prior art keywords
thread
sub
state
event
user operation
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.)
Granted
Application number
CN202010344829.9A
Other languages
English (en)
Other versions
CN111552567B (zh
Inventor
苟亚明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing QIYI Century Science and Technology Co Ltd
Original Assignee
Beijing QIYI Century Science and Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing QIYI Century Science and Technology Co Ltd filed Critical Beijing QIYI Century Science and Technology Co Ltd
Priority to CN202010344829.9A priority Critical patent/CN111552567B/zh
Publication of CN111552567A publication Critical patent/CN111552567A/zh
Application granted granted Critical
Publication of CN111552567B publication Critical patent/CN111552567B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5021Priority
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

一种线程管理方法、装置、电子设备及存储介质,属于计算机技术领域。所述方法包括:响应于用户操作,捕获所述用户操作触发的事件;获取所述用户操作触发的事件的优先级;根据正在处理的多个事件的优先级、所述用户操作触发的事件的优先级,确定优先处理的目标事件;根据所述目标事件、事件与子线程的对应关系,确定所述目标事件对应的第一子线程;执行所述第一子线程。采用本申请提供的技术方案,能够对线程进行管理。

Description

一种线程管理方法、装置、电子设备及存储介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种线程管理方法、装置、电子设备及存储介质。
背景技术
在为用户提供页面浏览服务的同时,电子设备会运行多个进程,每个进程包括一个主线程和多个子线程。主线程用于处理刷新页面、响应用户的触发操作等任务,子线程用于处理向页面的后台服务器发送数据请求、接收数据等任务。当某一时刻电子设备中运行的子线程的数量过多时,子线程会大量占用电子设备的计算资源,主线程可能无法获取足够的计算资源,从而导致界面响应速度慢。因此,需要对运行的子线程进行管理。
发明内容
为了解决上述技术问题,本申请提供了一种线程管理方法、装置、电子设备及存储介质。
第一方面,提供了一种线程管理方法,所述方法包括:
响应于用户操作,捕获所述用户操作触发的事件;
获取所述用户操作触发的事件的优先级;
根据正在处理的多个事件的优先级、所述用户操作触发的事件的优先级,确定优先处理的目标事件;
根据所述目标事件、事件与子线程的对应关系,确定所述目标事件对应的第一子线程;
执行所述第一子线程。
可选的,所述根据正在处理的多个事件的优先级、所述用户操作触发的事件的优先级,确定优先处理的目标事件之前,还包括:
获取当前执行的子线程的数目;
如果所述数目达到预设数目阈值,则执行所述根据正在处理的多个事件的优先级、所述用户操作触发的事件的优先级,确定优先处理的目标事件步骤。
可选的,所述根据所述目标事件、事件与子线程的对应关系,确定所述目标事件对应的第一子线程之后,还包括:
根据子线程与状态的对应关系,确定第二子线程的状态,所述第二子线程为已创建子线程中除第一子线程以外的子线程;
如果所述第二子线程的状态为预设运行状态,则停止运行所述第二子线程。
可选的,所述方法还包括:
如果第二子线程包括预设可优化子线程,则退出所述预设可优化子线程。
可选的,所述执行所述第一子线程之后,还包括:
根据子线程与状态的对应关系,确定处于预设暂停状态的第三子线程;
执行所述第三子线程。
可选的,所述方法还包括:
在创建子线程的过程中,注册该子线程的状态获取程序对象,所述状态获取程序对象用于记录子线程的状态;
通过已创建子线程的状态获取程序对象,获取已创建子线程的状态;
对应存储所述已创建子线程、所述已创建子线程的状态,得到子线程与状态的对应关系。
第二方面,提供了一种线程管理装置,所述装置包括:
捕获模块,用于响应于用户操作,捕获所述用户操作触发的事件;
第一获取模块,用于获取所述用户操作触发的事件的优先级;
第一确定模块,用于根据正在处理的多个事件的优先级、所述用户操作触发的事件的优先级,确定优先处理的目标事件;
第二确定模块,用于根据所述目标事件、事件与子线程的对应关系,确定所述目标事件对应的第一子线程;
执行模块,用于执行所述第一子线程。
可选的,所述装置还包括:
第二获取模块,用于获取当前执行的子线程的数目;
触发模块,用于当所述数目达到预设数目阈值时,则触发所述第一确定模块执行所述根据正在处理的多个事件的优先级、所述用户操作触发的事件的优先级,确定优先处理的目标事件步骤。
可选的,所述装置还包括:
第三确定模块,用于根据子线程与状态的对应关系,确定第二子线程的状态,所述第二子线程为已创建子线程中除第一子线程以外的子线程;
停止执行模块,用于当所述第二子线程的状态为预设运行状态时,停止运行所述第二子线程。
可选的,所述装置还包括:
线程终止模块,用于当第二子线程包括预设可优化子线程时,退出所述预设可优化子线程。
可选的,所述装置还包括:
第四确定模块,用于根据子线程与状态的对应关系,确定处于预设暂停状态的第三子线程;
所述执行模块,还用于执行所述第三子线程。
可选的,所述装置还包括:
注册模块,用于在创建子线程的过程中,注册该子线程的状态获取程序对象,所述状态获取程序对象用于记录子线程的状态;
第三获取模块,用于通过已创建子线程的状态获取程序对象,获取已创建子线程的状态;
存储模块,用于对应存储所述已创建子线程、所述已创建子线程的状态,得到子线程与状态的对应关系。
第三方面,提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现任一第一方面所述的方法步骤。
第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现任一第一方面所述的方法步骤。
第五方面,本申请还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一第一方面所述的方法步骤。
本申请实施例提供的上述技术方案与现有技术相比具有如下优点:
本申请实施例提供的该方法,可以响应于用户操作,捕获用户操作触发的事件;获取用户操作触发的事件的优先级;根据正在处理的多个事件的优先级、用户操作触发的事件的优先级,确定优先处理的目标事件;根据目标事件、事件与子线程的对应关系,确定目标事件对应的第一子线程;执行第一子线程。
由于可以在用户执行用户操作后,根据正在处理的多个事件的优先级和用户操作触发的事件的优先级,确定优先处理的目标事件,再执行目标事件对应的第一子线程,因此,可以实现子线程的管理。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种线程管理方法的流程图;
图2为本申请实施例提供的另一种线程管理方法的流程图;
图3为本申请实施例提供的另一种线程管理方法的流程图;
图4为本申请实施例提供的一种线程管理装置的结构示意图;
图5为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供了一种线程管理方法,可以应用于电子设备,电子设备可以是手机、平板电脑等。电子设备在运行应用程序时会同时开启多个子线程,例如,用户在浏览某一页面时,电子设备会开启子线程A向应用程序的后台服务器请求另一个页面的页面数据,开启子线程B计算当前页面的弹窗出现逻辑,开启子线程C向后台服务器发送用户在当前页面的停留时间。当接收到子线程返回的数据后,电子设备会销毁子线程。
当同一时刻开启子线程的数量过多时,会造成计算资源被大量子线程占用,主线程无法获取到足够的计算资源,从而导致界面响应速度慢的问题。如果对某一时刻运行的子线程的数量进行限制,或者,直接停止子线程执行的任务,可能会造成野指针的问题,进一步导致程序崩溃,影响用户体验。因此,需要对电子设备中运行的子线程进行管理。
下面将结合具体实施方式,对本申请实施例提供的一种线程管理方法进行详细的说明,如图1所示,具体步骤如下:
步骤101、响应于用户操作,捕获用户操作触发的事件。
在实施中,在用户使用电子设备的过程中,用户可以执行用户操作,以控制电子设备。用户操作可以是发出语音指令,用户操作也可以是触摸操作,例如,触摸操作可以是对电子设备的屏幕执行的双击操作、长按操作和滑动操作等。
响应于用户操作,电子设备可以捕获用户操作触发的事件。
本申请实施例提供了一种电子设备捕获用户操作触发的事件的实现方式:电子设备可以通过在预设API(Application Programming Interface,应用程序接口)中埋点的方式,确定预设API是否被调用,其中,预设API可以是touchesEnded、touchesMove和touchesCancel。当预设API被调用时,电子设备可以确定用户操作触发了事件。
然后,电子设备可以通过isFirstResponder方式在当前页面对应的多个响应对象中查找该事件的第一响应对象。电子设备可以判断第一响应对象是否能够响应该事件,如果第一响应对象无法响应该事件,则电子设备可以在当前页面对应的其他响应对象中,确定第一响应对象的传递者,再在传递者中确定能够响应该事件的程序对象,得到目标响应对象。如果第一响应对象能够响应该事件,则电子设备可以将第一响应对象作为目标响应对象。
电子设备可以获取目标响应对象对应的多个subview(子组件)元素,其中,subview元素可以是图像、文字和图标。然后,电子设备可以遍历目标响应对象对应的多个subview元素,得到与该事件对应的subview元素。
由于同一subview元素可能对应于多种使用场景,例如,subview元素为“我的”的图标时,该subview元素可以属于首页,也可以属于用户页面。因此,为了便于区分不同使用场景下的subview元素,电子设备可以获取当前使用场景的场景标识。
由此,电子设备可以通过获取到的目标响应对象的标识、与该事件对应的subview元素、当前使用场景的场景标识,唯一标识用户操作触发的事件。电子设备可以生成包含目标响应对象的标识、与该事件对应的subview元素、当前使用场景的场景标识的事件标识,再将事件标识存储于事件集合中。
本申请实施例中,用户操作触发的事件可以是长按、点击、滑动、捏合、双击、编辑等。本申请实施例在此不做具体限定。
步骤102、获取用户操作触发的事件的优先级。
在实施中,在捕获用户操作触发的事件后,电子设备可以向后台服务器发送优先级获取请求,优先级获取请求可以携带有该事件的事件标识。后台服务器可以根据事件标识、预先存储的事件与优先级的对应关系,确定该事件的优先级,再向电子设备发送该事件的优先级。
或者,电子设备中可以预先存储有事件与优先级的对应关系,电子设备可以根据事件与优先级的对应关系,确定用户操作触发的事件的优先级。
本申请实施例中,优先级可以是高优先级、中优先级和低优先级;优先级也可以是第一优先级、第二优先级,本申请实施例对此不作具体限定。
步骤103、根据正在处理的多个事件的优先级、用户操作触发的事件的优先级,确定优先处理的目标事件。
在实施中,电子设备可以获取正在处理的多个事件的优先级,每个正在处理的事件的优先级可以由电子设备捕获该事件时获取。然后,电子设备可以通过比较正在处理的多个事件的优先级,和用户操作触发的事件的优先级,确定优先处理的目标事件。
本申请实施例中,电子设备可以通过多种方式确定优先处理的目标事件,在一种可行的实现方式中,电子设备可以将优先级最高的事件作为优先处理的目标事件;在另一种可行的实现方式中,电子设备可以将优先级不低于预设优先级的事件作为优先处理的目标事件。
步骤104、根据目标事件、事件与子线程的对应关系,确定目标事件对应的第一子线程。
在实施中,电子设备中可以预先存储有事件与子线程的对应关系,电子设备可以在事件与子线程的对应关系中,将目标事件对应的子线程作为第一子线程。
步骤105、执行第一子线程。
本申请实施例中,电子设备可以响应于用户操作,捕获用户操作触发的事件;获取用户操作触发的事件的优先级;根据正在处理的多个事件的优先级、用户操作触发的事件的优先级,确定优先处理的目标事件;根据目标事件、事件与子线程的对应关系,确定目标事件对应的第一子线程;执行第一子线程。
由于可以在用户执行用户操作后,根据正在处理的多个事件的优先级和用户操作触发的事件的优先级,确定优先处理的目标事件,再执行目标事件对应的第一子线程,因此,可以实现子线程的管理,从而避免子线程占用过多计算资源,保证主线程能够获得足够的计算资源,提高页面响应速度。采用本申请实施例提供的技术方案,能够减少子线程不必要的计算资源消耗,均衡应用程序中各业务模块的任务处理情况。
可选的,在确定第一子线程之后,电子设备可以通过设置子线程的状态进行线程管理,如图2所示,具体包括以下步骤:
步骤201、根据子线程与状态的对应关系,确定第二子线程的状态。
其中,第二子线程为已创建子线程中除第一子线程以外的子线程。子线程的状态可以是新建、就绪、运行、阻塞、死亡中的一种。
在实施中,电子设备可以将已创建子线程中除第一子线程以外的子线程作为第二子线程。然后,电子设备可以获取子线程与状态的对应关系。之后,电子设备可以根据子线程与状态的对应关系,确定第二子线程的状态。后续会对电子设备获取子线程与状态的对应关系的具体处理过程进行详细说明。
步骤202、判断第二子线程的状态是否为预设运行状态。
其中,预设运行状态可以是新建、就绪、运行中的一种。
在实施中,电子设备可以判断第二子线程的状态是否为预设运行状态。如果第二子线程的状态为预设运行状态,则表明第二子线程可能会占用电子设备的计算资源,由此,电子设备可以执行步骤203。如果第二子线程的状态不是预设运行状态,则表明第二子线程不会占用电子设备的计算资源,由此,电子设备可以不作后续处理。
步骤203、停止运行第二子线程。
本申请实施例中,电子设备可以根据子线程与状态的对应关系,确定第二子线程的状态。然后,在第二子线程的状态为预设运行状态的情况下,停止运行第二子线程。由此,可以通过停止运行处于预设运行状态下的第二子线程,减少不必要的子线程开销并释放部分计算资源,从而实现线程管理。进一步的,可以保证主线程获取到足够的计算资源,从而提高界面响应速度。
可选的,电子设备还可以根据第二子线程的线程种类进行线程管理,如图3所示,包括以下步骤:
步骤301、判断第二子线程是否包括预设可优化子线程。
其中,预设可优化子线程可以由开发人员设置。预设可优化子线程可以是各子线程中占用计算资源多的子线程,预设可优化子线程也可以是各子线程中耗时大的子线程。
如果第二子线程包括预设可优化子线程,则电子设备可以执行步骤302。如果第二子线程不包括预设可优化子线程,则电子设备可以不作后续处理。
步骤302、退出预设可优化子线程。
本申请实施例中,电子设备可以在第二子线程包括预设可优化子线程的情况下,退出预设可优化子线程,由此,通过退出预设可优化子线程,可以减少不必要的子线程开销并释放部分计算资源,从而实现线程管理。进一步的,可以保证主线程获取到足够的计算资源,从而提高界面响应速度。
可选的,电子设备还可以根据当前执行的子线程的数目,确定是否进行线程管理,包括以下步骤:
步骤1、响应于用户操作,捕获用户操作触发的事件。
在实施中,此步骤的具体处理过程可以参照步骤101的处理过程,此处不再赘述。
步骤2、获取用户操作触发的事件的优先级。
在实施中,此步骤的具体处理过程可以参照步骤102的处理过程,此处不再赘述。
步骤3、获取当前执行的子线程的数目。
在实施中,电子设备可以根据子线程与状态的对应关系,确定状态为运行的子线程,然后,电子设备可以将状态为运行的子线程的数目,作为当前执行的子线程的数目。
之后,电子设备可以判断当前执行的子线程的数目是否达到预设数目阈值,预设数目阈值可以由开发人员设置,预设数目阈值可以是20。如果当前执行的子线程的数目未达到预设数目阈值,则电子设备可以直接确定用户操作触发的事件对应的子线程,再执行确定出的子线程。
步骤4、如果数目达到预设数目阈值,则根据正在处理的多个事件的优先级、用户操作触发的事件的优先级,确定优先处理的目标事件。
在实施中,此步骤的具体处理过程可以参照步骤103的处理过程,此处不再赘述。
步骤5、根据目标事件、事件与子线程的对应关系,确定目标事件对应的第一子线程。
在实施中,此步骤的具体处理过程可以参照步骤104的处理过程,此处不再赘述。
步骤6、执行第一子线程。
本申请实施例中,电子设备可以获取当前执行的子线程的数目,并在该数目达到预设数目阈值的情况下,根据正在处理的多个事件的优先级、用户操作触发的事件的优先级,确定优先处理的目标事件。然后,电子设备可以确定目标事件对应的第一子线程,执行第一子线程。由此,可以实现在当前已执行线程数目较多时,执行优先处理的目标事件对应的第一子线程,从而实现线程管理。进一步的,可以保证主线程获取到足够的计算资源,从而提高界面响应速度。
可选的,在执行第一子线程后,电子设备还可以通过更改子线程的状态,实现线程管理,包括以下步骤:
根据子线程与状态的对应关系,确定处于预设暂停状态的第三子线程,执行第三子线程。
在实施中,电子设备可以根据子线程与状态的对应关系,确定状态为阻塞的子线程,得到处于预设暂停状态的第三子线程。然后,电子设备可以执行第三子线程。
本申请实施例中,电子设备可以确定处于预设暂停状态的第三子线程,再执行第三子线程,由此,通过在执行第一子线程后执行处于预设暂停状态的第三子线程,可以实现按照事件的优先级响应事件。进一步的,可以保证能够得到响应的事件的数量,应用程序的正常运行。
可选的,本申请实施例提供了一种电子设备获取子线程与状态的对应关系的实现方式,包括以下步骤:
步骤一、在创建子线程的过程中,注册该子线程的状态获取程序对象。
其中,状态获取程序对象用于记录子线程的状态,状态获取程序对象可以是runloop(消息循环)中的observer(观察者)。
在实施中,电子设备可以在创建子线程的过程中,注册该子线程的状态获取程序对象。电子设备注册状态获取程序对象的具体处理过程,可以参照相关技术中开启线程时注册observer的处理过程,本申请不再赘述。
步骤二、通过已创建子线程的状态获取程序对象,获取已创建子线程的状态。
在实施中,电子设备可以针对每个已创建子线程,通过该已创建子线程的状态获取程序对象,获取该已创建子线程的状态,由此,电子设备可以获取各已创建子线程的状态。
本申请实施例中,电子设备可以创建程序对象QYThread,并调用init、detachNewThreadSelector和performSelectorInBackground方法,然后,电子设备可以通过调用程序对象QYThread,获取各已创建子线程的状态。
步骤三、对应存储已创建子线程、已创建子线程的状态,得到子线程与状态的对应关系。
本申请实施例中,电子设备可以在创建子线程的过程中,注册该子线程的状态获取程序对象。通过已创建子线程的状态获取程序对象,获取已创建子线程的状态。然后,对应存储已创建子线程、已创建子线程的状态,得到子线程与状态的对应关系。由此,便于电子设备根据子线程与状态的对应关系,确定子线程的状态,再基于子线程的状态进行线程管理。
可选的,本申请实施例还提供了一种线程管理方法的示例,在运行过程中,电子设备可以在创建每个子线程时,注册observer,通过observer获取该子线程的状态。然后,电子设备可以创建QYThread公共基类,通过QYThread公共基类获取各已创建子线程的状态。之后,电子设备可以对应存储子线程和子线程的状态,得到子线程与状态的对应关系,并将子线程与状态的对应关系存储至全局字典中。
响应于用户操作,电子设备可以捕获用户操作触发的事件。然后,电子设备可以生成捕获的事件的事件标识,将事件标识存储至事件集合中。事件标识可以包括当前使用场景的场景标识、subview元素、目标响应对象的标识。
电子设备向服务器发送优先级获取请求,优先级获取请求可以携带有事件标识。服务器可以根据事件标识和优先级确定方式,确定用户操作触发的事件的优先级,然后,服务器可以向电子设备发送优先级指示消息,优先级指示消息用于指示所捕获事件的优先级。电子设备在接收到优先级指示消息后,可以在元素事件优先级模块中,存储该事件的优先级。
电子设备可以获取当前执行的子线程的数目。如果该数目达到预设数目阈值,则电子设备可以在事件集合中,匹配当前使用场景下用户触发的事件,得到用户操作触发的事件的优先级。然后,电子设备可以根据正在处理的多个事件的优先级、用户操作触发的事件的优先级,确定优先处理的目标事件。之后,电子设备可以根据目标事件、事件与子线程的对应关系,确定目标事件对应的第一子线程,执行第一子线程。同时,电子设备还可以停止运行处于预设运行状态的第二子线程,在第二子线程包括预设可优化子线程的情况下,电子设备还可以退出预设可优化子线程。在执行第一子线程后,电子设备可以执行处于预设暂停状态的第三子线程。
本申请实施例还提供了一种线程管理装置,如图4所示,所述装置包括:
捕获模块410,用于响应于用户操作,捕获所述用户操作触发的事件;
第一获取模块420,用于获取所述用户操作触发的事件的优先级;
第一确定模块430,用于根据正在处理的多个事件的优先级、所述用户操作触发的事件的优先级,确定优先处理的目标事件;
第二确定模块440,用于根据所述目标事件、事件与子线程的对应关系,确定所述目标事件对应的第一子线程;
执行模块450,用于执行所述第一子线程。
可选的,所述装置还包括:
第二获取模块,用于获取当前执行的子线程的数目;
触发模块,用于当所述数目达到预设数目阈值时,则触发所述第一确定模块执行所述根据正在处理的多个事件的优先级、所述用户操作触发的事件的优先级,确定优先处理的目标事件步骤。
可选的,所述装置还包括:
第三确定模块,用于根据子线程与状态的对应关系,确定第二子线程的状态,所述第二子线程为已创建子线程中除第一子线程以外的子线程;
停止执行模块,用于当所述第二子线程的状态为预设运行状态时,停止运行所述第二子线程。
可选的,所述装置还包括:
线程终止模块,用于当第二子线程包括预设可优化子线程时,退出所述预设可优化子线程。
可选的,所述装置还包括:
第四确定模块,用于根据子线程与状态的对应关系,确定处于预设暂停状态的第三子线程;
所述执行模块,还用于执行所述第三子线程。
可选的,所述装置还包括:
注册模块,用于在创建子线程的过程中,注册该子线程的状态获取程序对象,所述状态获取程序对象用于记录子线程的状态;
第三获取模块,用于通过已创建子线程的状态获取程序对象,获取已创建子线程的状态;
存储模块,用于对应存储所述已创建子线程、所述已创建子线程的状态,得到子线程与状态的对应关系。
本申请实施例提供的上述技术方案与现有技术相比具有如下优点:
本申请实施例提供的该装置,可以响应于用户操作,捕获用户操作触发的事件;获取用户操作触发的事件的优先级;根据正在处理的多个事件的优先级、用户操作触发的事件的优先级,确定优先处理的目标事件;根据目标事件、事件与子线程的对应关系,确定目标事件对应的第一子线程;执行第一子线程。
由于可以在用户执行用户操作后,根据正在处理的多个事件的优先级和用户操作触发的事件的优先级,确定优先处理的目标事件,再执行目标事件对应的第一子线程,因此,可以实现子线程的管理。
本申请实施例还提供了一种电子设备,如图5所示,包括处理器501、通信接口502、存储器503和通信总线504,其中,处理器501,通信接口502,存储器503通过通信总线504完成相互间的通信,
存储器503,用于存放计算机程序;
处理器501,用于执行存储器503上所存放的程序时,实现以下步骤:
响应于用户操作,捕获所述用户操作触发的事件;
获取所述用户操作触发的事件的优先级;
根据正在处理的多个事件的优先级、所述用户操作触发的事件的优先级,确定优先处理的目标事件;
根据所述目标事件、事件与子线程的对应关系,确定所述目标事件对应的第一子线程;
执行所述第一子线程。
可选的,所述根据正在处理的多个事件的优先级、所述用户操作触发的事件的优先级,确定优先处理的目标事件之前,还包括:
获取当前执行的子线程的数目;
如果所述数目达到预设数目阈值,则执行所述根据正在处理的多个事件的优先级、所述用户操作触发的事件的优先级,确定优先处理的目标事件步骤。
可选的,所述根据所述目标事件、事件与子线程的对应关系,确定所述目标事件对应的第一子线程之后,还包括:
根据子线程与状态的对应关系,确定第二子线程的状态,所述第二子线程为已创建子线程中除第一子线程以外的子线程;
如果所述第二子线程的状态为预设运行状态,则停止运行所述第二子线程。
可选的,所述方法还包括:
如果第二子线程包括预设可优化子线程,则退出所述预设可优化子线程。
可选的,所述执行所述第一子线程之后,还包括:
根据子线程与状态的对应关系,确定处于预设暂停状态的第三子线程;
执行所述第三子线程。
可选的,所述方法还包括:
在创建子线程的过程中,注册该子线程的状态获取程序对象,所述状态获取程序对象用于记录子线程的状态;
通过已创建子线程的状态获取程序对象,获取已创建子线程的状态;
对应存储所述已创建子线程、所述已创建子线程的状态,得到子线程与状态的对应关系。
上述终端提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述终端与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
本申请实施例提供的上述技术方案与现有技术相比具有如下优点:
本申请实施例提供的该电子设备,可以响应于用户操作,捕获用户操作触发的事件;获取用户操作触发的事件的优先级;根据正在处理的多个事件的优先级、用户操作触发的事件的优先级,确定优先处理的目标事件;根据目标事件、事件与子线程的对应关系,确定目标事件对应的第一子线程;执行第一子线程。
由于可以在用户执行用户操作后,根据正在处理的多个事件的优先级和用户操作触发的事件的优先级,确定优先处理的目标事件,再执行目标事件对应的第一子线程,因此,可以实现子线程的管理。
在本申请提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的线程管理方法。
在本申请提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的线程管理方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。

Claims (10)

1.一种线程管理方法,其特征在于,所述方法包括:
响应于用户操作,捕获所述用户操作触发的事件;
获取所述用户操作触发的事件的优先级;
根据正在处理的多个事件的优先级、所述用户操作触发的事件的优先级,确定优先处理的目标事件;
根据所述目标事件、事件与子线程的对应关系,确定所述目标事件对应的第一子线程;
执行所述第一子线程。
2.根据权利要求1所述的方法,其特征在于,所述根据正在处理的多个事件的优先级、所述用户操作触发的事件的优先级,确定优先处理的目标事件之前,还包括:
获取当前执行的子线程的数目;
如果所述数目达到预设数目阈值,则执行所述根据正在处理的多个事件的优先级、所述用户操作触发的事件的优先级,确定优先处理的目标事件步骤。
3.根据权利要求1所述的方法,其特征在于,所述根据所述目标事件、事件与子线程的对应关系,确定所述目标事件对应的第一子线程之后,还包括:
根据子线程与状态的对应关系,确定第二子线程的状态,所述第二子线程为已创建子线程中除第一子线程以外的子线程;
如果所述第二子线程的状态为预设运行状态,则停止运行所述第二子线程。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
如果第二子线程包括预设可优化子线程,则退出所述预设可优化子线程。
5.根据权利要求1-4任一所述的方法,其特征在于,所述执行所述第一子线程之后,还包括:
根据子线程与状态的对应关系,确定处于预设暂停状态的第三子线程;
执行所述第三子线程。
6.根据权利要求3所述的方法,其特征在于,所述方法还包括:
在创建子线程的过程中,注册该子线程的状态获取程序对象,所述状态获取程序对象用于记录子线程的状态;
通过已创建子线程的状态获取程序对象,获取已创建子线程的状态;
对应存储所述已创建子线程、所述已创建子线程的状态,得到子线程与状态的对应关系。
7.一种线程管理装置,其特征在于,所述装置包括:
捕获模块,用于响应于用户操作,捕获所述用户操作触发的事件;
第一获取模块,用于获取所述用户操作触发的事件的优先级;
第一确定模块,用于根据正在处理的多个事件的优先级、所述用户操作触发的事件的优先级,确定优先处理的目标事件;
第二确定模块,用于根据所述目标事件、事件与子线程的对应关系,确定所述目标事件对应的第一子线程;
执行模块,用于执行所述第一子线程。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第二获取模块,用于获取当前执行的子线程的数目;
触发模块,用于当所述数目达到预设数目阈值时,则触发所述第一确定模块执行所述根据正在处理的多个事件的优先级、所述用户操作触发的事件的优先级,确定优先处理的目标事件步骤。
9.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-6任一所述的方法步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-6任一所述的方法步骤。
CN202010344829.9A 2020-04-27 2020-04-27 一种线程管理方法、装置、电子设备及存储介质 Active CN111552567B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010344829.9A CN111552567B (zh) 2020-04-27 2020-04-27 一种线程管理方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010344829.9A CN111552567B (zh) 2020-04-27 2020-04-27 一种线程管理方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN111552567A true CN111552567A (zh) 2020-08-18
CN111552567B CN111552567B (zh) 2023-07-07

Family

ID=72004140

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010344829.9A Active CN111552567B (zh) 2020-04-27 2020-04-27 一种线程管理方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN111552567B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112306657A (zh) * 2020-10-30 2021-02-02 上海二三四五网络科技有限公司 一种基于优先级排序实现多个事件的线性倒计时的控制方法及装置
CN113742807A (zh) * 2021-09-07 2021-12-03 广联达科技股份有限公司 交互处理方法、装置及电子设备
CN113986107A (zh) * 2021-10-22 2022-01-28 北京鲸鲮信息系统技术有限公司 基于图形显示系统的触控处理方法及装置、电子设备、存储介质
CN115016954A (zh) * 2021-12-24 2022-09-06 荣耀终端有限公司 事件消息管理方法、电子设备和计算机可读取存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008011072A (ja) * 2006-06-28 2008-01-17 Sharp Corp 送受信方法
CN107463439A (zh) * 2017-08-21 2017-12-12 山东浪潮通软信息科技有限公司 一种线程池实现方法及装置
CN107832126A (zh) * 2017-10-20 2018-03-23 平安科技(深圳)有限公司 一种线程的调整方法及其终端
US20180107600A1 (en) * 2016-10-19 2018-04-19 International Business Machines Corporation Response times in asynchronous i/o-based software using thread pairing and co-execution
CN109117260A (zh) * 2018-08-30 2019-01-01 百度在线网络技术(北京)有限公司 一种任务调度方法、装置、设备和介质
CN109783229A (zh) * 2018-12-17 2019-05-21 平安普惠企业管理有限公司 线程资源分配的方法及装置
CN110633148A (zh) * 2019-09-06 2019-12-31 香港乐蜜有限公司 一种系统运行的优化方法、装置、电子设备及存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008011072A (ja) * 2006-06-28 2008-01-17 Sharp Corp 送受信方法
US20180107600A1 (en) * 2016-10-19 2018-04-19 International Business Machines Corporation Response times in asynchronous i/o-based software using thread pairing and co-execution
CN107463439A (zh) * 2017-08-21 2017-12-12 山东浪潮通软信息科技有限公司 一种线程池实现方法及装置
CN107832126A (zh) * 2017-10-20 2018-03-23 平安科技(深圳)有限公司 一种线程的调整方法及其终端
CN109117260A (zh) * 2018-08-30 2019-01-01 百度在线网络技术(北京)有限公司 一种任务调度方法、装置、设备和介质
CN109783229A (zh) * 2018-12-17 2019-05-21 平安普惠企业管理有限公司 线程资源分配的方法及装置
CN110633148A (zh) * 2019-09-06 2019-12-31 香港乐蜜有限公司 一种系统运行的优化方法、装置、电子设备及存储介质

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112306657A (zh) * 2020-10-30 2021-02-02 上海二三四五网络科技有限公司 一种基于优先级排序实现多个事件的线性倒计时的控制方法及装置
CN113742807A (zh) * 2021-09-07 2021-12-03 广联达科技股份有限公司 交互处理方法、装置及电子设备
CN113742807B (zh) * 2021-09-07 2024-05-14 广联达科技股份有限公司 交互处理方法、装置及电子设备
CN113986107A (zh) * 2021-10-22 2022-01-28 北京鲸鲮信息系统技术有限公司 基于图形显示系统的触控处理方法及装置、电子设备、存储介质
CN115016954A (zh) * 2021-12-24 2022-09-06 荣耀终端有限公司 事件消息管理方法、电子设备和计算机可读取存储介质

Also Published As

Publication number Publication date
CN111552567B (zh) 2023-07-07

Similar Documents

Publication Publication Date Title
CN111552567B (zh) 一种线程管理方法、装置、电子设备及存储介质
US10740136B2 (en) Automatic virtual machine termination in a cloud
CN107832100B (zh) 一种apk插件的加载方法及其终端
WO2018196559A1 (zh) 应用程序异常处理方法、装置及存储介质
CN109542744A (zh) 检测终端开机异常问题的方法、装置、存储介质及终端
CN109344066B (zh) 一种浏览器页面的测试方法、系统及终端
CN110377341B (zh) 一种监听无响应异常的方法、装置、介质和电子设备
US20160179296A1 (en) Method and device for video rendering
CN113792341B (zh) 应用程序的隐私合规自动化检测方法、装置、设备及介质
CN112925717A (zh) 用于确定调用栈栈帧的对象的方法、装置、设备和介质
CN115185777A (zh) 一种异常检测方法、装置、可读存储介质以及电子设备
WO2017162052A1 (zh) 移动终端的工作方法及装置
CN112653736B (zh) 一种并行回源方法、装置及电子设备
CN113157439B (zh) 一种资源统计方法、装置及终端
CN110120963B (zh) 一种数据处理方法、装置、设备和机器可读介质
CN106482742A (zh) 计步数据的获取方法及装置
CN115580522A (zh) 一种容器云平台运行状态的监控方法及装置
CN111124627A (zh) 应用程序的调起者确定方法、装置、终端及存储介质
CN109299600B (zh) 一种应用锁定解锁方法、装置、终端及可读存储介质
CN108388797B (zh) 一种入侵检测方法、装置及电子设备
CN113992784A (zh) 音视频通话方法、装置、计算机设备和存储介质
CN113467867A (zh) 信息处理方法、装置、电子设备及存储介质
CN112714161A (zh) 视频接入方法、装置及视频接入系统
CN107621903B (zh) 一种双触摸屏设备及其响应控制方法
CN110633566A (zh) 一种侵入检测方法、装置、终端设备及介质

Legal Events

Date Code Title Description
PB01 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