CN105912394A - 线程处理方法和系统 - Google Patents
线程处理方法和系统 Download PDFInfo
- Publication number
- CN105912394A CN105912394A CN201610262493.5A CN201610262493A CN105912394A CN 105912394 A CN105912394 A CN 105912394A CN 201610262493 A CN201610262493 A CN 201610262493A CN 105912394 A CN105912394 A CN 105912394A
- Authority
- CN
- China
- Prior art keywords
- thread
- preplanned mission
- storage resource
- follow
- current
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Small-Scale Networks (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种线程处理方法和系统,该线程处理方法包括以下步骤:获取一处于运行状态的线程所使用的存储资源的信息;对所述存储资源的信息进行解析,获取解析结果;当解析结果中存在预定标记时,确定该处于运行状态的线程为执行预定任务的线程。上述的线程处理方法和系统,能够精确识别出执行预定任务/功能所对应的线程。
Description
技术领域
本发明涉及处理器技术领域,特别是涉及一种线程处理方法和系统。
背景技术
在一些领域中,例如移动智能通讯终端领域中,应用程序在执行时,一个应用进程会被分成多个线程,每个线程负责不同的任务。现有的线程处理技术只是做一些基础运算、或者执行一些线程/进程间的通信,不能识别出执行特定任务所对应的线程。这些特定任务包括,例如绘制画面、播出声音、响应回馈等对用户体验影响大的任务。
发明内容
基于此,有必要针对上述技术问题,提供一种线程处理方法和系统,其能够识别出执行预定任务/功能所对应的线程。
一种线程处理方法,包括以下步骤:
获取一处于运行状态的线程所使用的存储资源的信息;
对所述存储资源的信息进行解析,获取解析结果;
当所述解析结果中存在预定标记时,确定所述处于运行状态的线程为执行预定任务的线程。
在其中一个实施例中,在获取所述处于运行状态的线程所使用的存储资源的步骤之前,还包括:
获取执行预定任务的线程所使用的存储资源,并对所述存储资源进行标记。
在其中一个实施例中,在确定所述线程为执行预定任务的线程的步骤之后,还包括:
确定与执行预定任务的当前线程相关联的前导线程和/或后继线程,其中,所述前导线程和所述后继线程均为执行预定任务的线程。
在其中一个实施例中,所述获取与所述执行预定任务的当前线程相关联的后继线程的步骤包括:
根据所述执行预定任务的当前线程所使用的资源,获取所述后继线程;或者
获取与所述执行预定任务的当前线程进行通信的线程,将所述通信的线程作为所述后继线程。
在其中一个实施例中,还包括:根据预定的规则管理所述执行预定任务的线程。
一种线程处理系统,包括:
存储资源信息获取模块,用于获取一处于运行状态的线程所使用的存储资源的信息;
解析模块,用于对所述存储资源信息进行解析,获取解析结果;
处理模块,用于当所述解析结果中存在预定标记时,确定所述处于运行状态的线程为执行预定任务的线程。
在其中一个实施例中,还包括:标记模块,用于获取执行预定任务的线程所使用的存储资源,并对所述存储资源进行标记。
在其中一个实施例中,所述处理模块还用于:确定与执行预定任务的当前线程相关联的前导线程和/或后继线程,其中,所述前导线程和所述后继线程均为执行预定任务的线程。
在其中一个实施例中,所述处理模块还用于:根据所述执行预定任务的当前线程所使用的资源,获取所述后继线程;或者获取与所述执行预定任务的当前线程进行通信的线程,将所述通信的线程作为所述后继线程。
在其中一个实施例中,还包括:管理模块,用于根据预定的规则管理所述执行预定任务的线程。
上述的线程处理方法和系统,通过获取处理器上处于运行状态的线程所使用的存储资源;对该存储资源进行解析,获取解析结果;当解析结果中存在预定标记时,确定线程为执行预定任务的线程。上述的线程处理方法和系统能够精确地识别执行预定任务的线程。
附图说明
图1为一个实施例中的线程处理方法的流程图;
图2为一个实施例中的与当前线程相关联的线程的状态示意图;
图3为一个实施例中的线程处理系统的结构框图;
图4为另一个实施例中的线程处理系统的结构框图。
具体实施方式
在一个实施例中,如图1所示,提出一种线程处理方法。该方法包括以下步骤:
步骤102,获取一处于运行状态的线程所使用的存储资源的信息。
线程(thread)有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID、当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在运行中呈现出间断性。线程也有就绪、阻塞和运行三种基本状态。
线程在处于运行状态时,线程运行所需要的原始数据来自内存。在线程运行过程中,有些数据可能被频繁读取,这些数据将被存储在寄存器和高速缓存中。当线程运行结束,这些缓存的数据在适当的时候应该写回内存。因此,处于运行状态的线程使用的存储资源可以包括寄存器、高速缓存、内存和外部存储设备等。存储资源的信息可包括线程所使用的存储资源的地址空间。
在本实施方式中,可以先获取处理器上运行的所有的进程,然后执行步骤104以逐一获取每个进程所使用的存储资源的信息。在本实施例中处理器的数目可以为一个或者多个。处理器可以为中央处理器(Central Processing Unit,CPU),图形处理器(Graphics Processing Unit,GPU),视频处理单元(Video ProcessingUnit,VPU)等中的至少一种。线程的数目可以为一个或多个。
步骤104,对存储资源的信息进行解析,获取解析结果。
在本实施例中,对存储资源的解析包括线程所使用的存储资源的地址空间进行解析。例如,读取存储资源上某一地址空间的文件夹的名称。获取的解析结果包括地址空间中的地址以及该地址空间的文件夹的名称。这些文件夹的名称可以为字符串形式。
步骤106,当解析结果中存在预定标记时,确定处于运行状态的线程为执行预定任务的线程。
由于会预先对执行预定任务/功能所使用的存储资源上进行标记,因此根据上述步骤104获取的解析结果,当解析结果中存在预定标记时,则可确定该处于运行状的线程在使用该存储资源,因此可以确定该处于运行状态的线程为执行预定任务的线程。反之,确定该处于运行状态的线程为执行非预定任务的线程。其中,可以将标记添加在存储资源的某一地址空间的文件夹的名称中。
在本实施例中,预定任务指对用户体验影响大的任务,例如执行绘制画面、播出声音、响应回馈等任务。
上述的线程处理方法,获取处理器上处于运行状态的线程所使用的存储资源;对该存储资源进行解析,获取解析结果;当解析结果中存在预定标记时确定线程为执行预定任务的线程。上述的线程处理方法能够精确地识别执行预定任务的线程。如此,在识别出执行预定任务(例如对用户体验影响大的任务)的线程后,可以有针对性的对所述线程进行管理,使得预定任务能够顺利的执行,避免设备的卡顿。
在一个实施例中,在获取一处于运行状态的线程所使用的存储资源的信息的步骤之前,还包括:
对执行预定任务的线程所使用的存储资源进行标记。
每个线程都有自己的执行空间(即工作内存),线程运行时用到某变量,首先要将该变量从主内存拷贝到工作内存空间,然后对变量进行读取、修改、赋值等操作。这些均在工作内存完成,操作完成后再将变量写回主内存。
在本实施例中,获取执行预定任务的线程所使用的存储资源,在该存储资源的地址空间的文件夹的名称进行标记。例如,可以在文件夹的名称的起始位置和/或结尾位置添加标记。
在一个实施例中,在确定处于运行状态的线程为执行预定任务的线程的步骤之后,该方法还包括:
确定与所述执行预定任务的线程相关联的后继线程和/或前导线程。
在本实施例中,后继线程为接手当前预定任务的线程。由于某一任务从处理器接收到任务执行指令到准备工作,整个过程会有不同的线程去处理。因此确定当前执行预定任务的线程创建的后继线程是有必要的,因为后继进程也会影响预定任务的执行。例如图2所示,线程B为执行预定任务的当前线程,线程C为线程B的后继线程。
在本实施例中,前导线程为传递预定任务给当前执行预定任务的线程,即前导线程为创建当前执行预定任务的线程。用与确定后继线程相同的方式反向追踪出前导线程。例如图2所示,线程B为执行预定任务的当前线程,线程A为线程B的前导线程。
上述实施例的方式,通过追踪和反向追踪的方式获取与执行预定任务的当前线程相关联的前导线程和后继线程,便于线程调度器对与执行预定任务的线程相关联的线程进行调度管理。
在一个实施例中,获取与执行预定任务的当前线程相关联的后继线程的步骤包括:
根据执行预定任务的当前线程所使用的资源,获取后继线程。
在本实施例中,以Linux多线程为例,如果当前线程在存储资源上请求了某一特定的地址空间,当有线程也去这一特定的地址空间存取,那么则可认为该线程是为接手预定任务去该地址空间存取,该线程则可判定为当前线程的后继线程。
在另一个实施例中,获取与执行预定任务的当前线程相关联的后继线程的步骤包括:
获取与执行预定任务的当前线程进行通信的线程,将通信的线程作为后继线程。
在本实施例中,线程之间有多种通信关系,如果存在与执行预定任务的当前线程通信的线程,则可以认为该通信的线程与执行预定任务的当前线程有任务合作关系,因此可以判定该通信的线程即为执行预定任务的当前线程的后继线程。
进一步地,可以利用上述实施例描述的方式方向追踪出与执行预定任务的当前线程相关联(有任务合作关系)的前导线程。
在一个实施例中,在确定处于运行状态的线程为执行预定任务的线程之后,还包括:
根据预定的规则管理执行预定任务的线程。
所述预定的规则包括:执行预定任务的线程效能最大化和资源竞争最小化的原则。线程效能为执行预定任务的线程完成预定任务/功能所花费时间的倒数,时间越短,则执行预定任务的线程的效能越好。
在本实施例中,对执行预定任务的线程进行管理包括:线程调度器将效能高的处理器调配给执行预定任务的线程,以满足执行预定任务的线程的效能需求。同时,线程调度器对处理器上的线程进行调度,减少执行预定任务的线程的资源竞争,进一步地提高执行预定任务的线程的效能。
在一个实施例中,如图3所示,提出了一种线程处理系统300。该系统300包括:存储资源信息获取模块302、解析模块304和处理模块306。
存储资源信息获取模块302,用于获取一处于运行状态的线程所使用的存储资源的信息。解析模块304用于对存储资源信息进行解析,获取解析结果。处理模块306用于当解析结果中存在预定标记时,确定该处于运行状态的线程判定为执行预定任务的线程。
在一个实施例中,如图4所示,系统300还包括:标记模块308。标记模块308,用于获取执行预定任务的线程所使用的存储资源,并对存储资源进行标记。
在一个实施例中,处理模块306还用于:确定与执行预定任务的当前线程相关联的前导线程和/或后继线程,其中,前导线程和后继线程均为执行预定任务的线程。
在一个实施例中,处理模块306还用于:根据执行预定任务的当前线程所使用的资源,获取后继线程;或者获取与执行预定任务的当前线程进行通信的线程,将通信的线程作为后继线程。
在一个实施例中,如图4所示,该系统300还包括:管理模块310。管理模块310,用于根据预定的规则管理执行预定任务的线程。
本实施例的线程处理系统300用于实现前述的线程处理方法,因此线程处理系统300中的具体实施可参见前文中线程处理方法的实施例部分,在此不再累述。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种线程处理方法,其特征在于,包括以下步骤:
获取一处于运行状态的线程所使用的存储资源的信息;
对所述存储资源的信息进行解析,获取解析结果;
当所述解析结果中存在预定标记时,则确定所述处于运行状态的线程为执行预定任务的线程。
2.根据权利要求1所述的方法,其特征在于,在获取所述处于运行状态的线程所使用的存储资源的步骤之前,还包括:
获取执行预定任务的线程所使用的存储资源,并对所述存储资源进行标记。
3.根据权利要求1所述的方法,其特征在于,在所述将所述线程判定为执行预定任务的线程的步骤之后,还包括:
确定与执行预定任务的当前线程相关联的前导线程和/或后继线程,其中,所述前导线程和所述后继线程均为执行预定任务的线程。
4.根据权利要求3所述的方法,其特征在于,所述获取与所述执行预定任务的当前线程相关联的后继线程的步骤包括:
根据所述执行预定任务的当前线程所使用的资源,获取所述后继线程;或者
获取与所述执行预定任务的当前线程进行通信的线程,将与所述当前线程通信的线程作为所述后继线程。
5.根据权利要求1或3所述的方法,其特征在于,还包括:根据预定的规则管理所述执行预定任务的线程。
6.一种线程处理系统,其特征在于,包括:
存储资源信息获取模块,用于获取所述一处于运行状态的线程所使用的存储资源的信息;
解析模块,用于对所述存储资源的信息进行解析,获取解析结果;
处理模块,用于当所述解析结果中存在所述预定标记时,确定所述处于运行状态的线程为执行预定任务的线程。
7.根据权利要求6所述的系统,其特征在于,还包括:
标记模块,用于获取执行预定任务的线程所使用的存储资源,并对所述存储资源进行标记。
8.根据权利要求6所述的系统,其特征在于,所述处理模块还用于:确定与执行预定任务的当前线程相关联的前导线程和/或后继线程,其中,所述前导线程和所述后继线程均为执行预定任务的线程。
9.根据权利要求8所述的系统,其特征在于,所述处理模块还用于:根据所述执行预定任务的当前线程所使用的资源,获取所述后继线程;或者获取与所述执行预定任务的当前线程进行通信的线程,将与所述当前进程通信的线程作为所述后继线程。
10.根据权利要求6或8所述的系统,其特征在于,还包括:管理模块,用于对根据预定的规则管理所述执行预定任务的线程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610262493.5A CN105912394B (zh) | 2016-04-25 | 2016-04-25 | 线程处理方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610262493.5A CN105912394B (zh) | 2016-04-25 | 2016-04-25 | 线程处理方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105912394A true CN105912394A (zh) | 2016-08-31 |
CN105912394B CN105912394B (zh) | 2020-02-11 |
Family
ID=56752884
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610262493.5A Active CN105912394B (zh) | 2016-04-25 | 2016-04-25 | 线程处理方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105912394B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108509260A (zh) * | 2018-01-31 | 2018-09-07 | 深圳市万普拉斯科技有限公司 | 线程识别处理方法、装置、计算机设备和存储介质 |
CN109388485A (zh) * | 2018-09-26 | 2019-02-26 | 广州虎牙信息科技有限公司 | 一种任务执行线程的处理方法、装置、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101196833A (zh) * | 2006-12-07 | 2008-06-11 | 国际商业机器公司 | 用于存储器利用的方法和装置 |
CN102012844A (zh) * | 2010-11-29 | 2011-04-13 | 上海大学 | 一种面向cmp系统的线程调度方法 |
CN103699432A (zh) * | 2013-12-17 | 2014-04-02 | 华中科技大学 | 一种异构环境下的多任务运行时协同调度系统 |
CN104503828A (zh) * | 2014-12-12 | 2015-04-08 | 广东欧珀移动通信有限公司 | 一种进程管理方法及终端 |
US20160092264A1 (en) * | 2014-09-30 | 2016-03-31 | International Business Machines Corporation | Post-return asynchronous code execution |
-
2016
- 2016-04-25 CN CN201610262493.5A patent/CN105912394B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101196833A (zh) * | 2006-12-07 | 2008-06-11 | 国际商业机器公司 | 用于存储器利用的方法和装置 |
CN102012844A (zh) * | 2010-11-29 | 2011-04-13 | 上海大学 | 一种面向cmp系统的线程调度方法 |
CN102012844B (zh) * | 2010-11-29 | 2013-01-09 | 上海大学 | 一种面向cmp系统的线程调度方法 |
CN103699432A (zh) * | 2013-12-17 | 2014-04-02 | 华中科技大学 | 一种异构环境下的多任务运行时协同调度系统 |
US20160092264A1 (en) * | 2014-09-30 | 2016-03-31 | International Business Machines Corporation | Post-return asynchronous code execution |
CN104503828A (zh) * | 2014-12-12 | 2015-04-08 | 广东欧珀移动通信有限公司 | 一种进程管理方法及终端 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108509260A (zh) * | 2018-01-31 | 2018-09-07 | 深圳市万普拉斯科技有限公司 | 线程识别处理方法、装置、计算机设备和存储介质 |
CN108509260B (zh) * | 2018-01-31 | 2021-08-13 | 深圳市万普拉斯科技有限公司 | 线程识别处理方法、装置、计算机设备和存储介质 |
CN109388485A (zh) * | 2018-09-26 | 2019-02-26 | 广州虎牙信息科技有限公司 | 一种任务执行线程的处理方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105912394B (zh) | 2020-02-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3369045B1 (en) | Determining orders of execution of a neural network | |
US9495167B2 (en) | Load queue entry reuse for operand store compare history table update | |
US20210125124A1 (en) | Utilizing a machine learning model to manage a project release | |
US20090106730A1 (en) | Predictive cost based scheduling in a distributed software build | |
US10592494B2 (en) | Collection record for overlapping data stream collections | |
CN105426259B (zh) | 用于传递api中的依赖关系的方法和介质 | |
US10732841B2 (en) | Tracking ownership of memory in a data processing system through use of a memory monitor | |
CN104834599A (zh) | Web安全检测方法和装置 | |
US8626799B2 (en) | Mapping data structures | |
CN106326398A (zh) | 数据一致性对比的方法及装置 | |
US9582189B2 (en) | Dynamic tuning of memory in MapReduce systems | |
CN109828823A (zh) | 一种基于容器虚拟化技术的无人机算法仿真系统扩展方法 | |
US11275661B1 (en) | Test generation of a distributed system | |
CN104049947A (zh) | 基于动态重命名的矢量寄存器堆的寄存器重新配置 | |
CN105912394A (zh) | 线程处理方法和系统 | |
US10580106B2 (en) | Graphics processing method utilizing predefined render chunks | |
US20210312324A1 (en) | Systems and methods for integration of human feedback into machine learning based network management tool | |
CN109961516A (zh) | 表面获取方法、装置及非暂态电脑可读取记录媒体 | |
CN108829790A (zh) | 一种数据批处理方法、装置及系统 | |
JP2014021847A (ja) | リソース管理装置及びリソース管理方法及びプログラム | |
CN105955971B (zh) | 一种键值缓存的实现方法及装置 | |
CN103136035B (zh) | 用于混合线程模式的程序的线程管理的方法和装置 | |
Lerchner et al. | An open S-BPM runtime environment based on abstract state machines | |
US9317261B2 (en) | Level based data supply for reusable interface components | |
US10475151B2 (en) | Graphics engine resource management and allocation system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |