CN100340976C - 一种实现计算机多线程控制的方法及装置 - Google Patents
一种实现计算机多线程控制的方法及装置 Download PDFInfo
- Publication number
- CN100340976C CN100340976C CNB2003101019045A CN200310101904A CN100340976C CN 100340976 C CN100340976 C CN 100340976C CN B2003101019045 A CNB2003101019045 A CN B2003101019045A CN 200310101904 A CN200310101904 A CN 200310101904A CN 100340976 C CN100340976 C CN 100340976C
- Authority
- CN
- China
- Prior art keywords
- thread
- threads
- library
- application program
- computing machine
- 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 - Lifetime
Links
- 238000000034 method Methods 0.000 title claims abstract description 51
- 239000000725 suspension Substances 0.000 claims description 4
- 230000008569 process Effects 0.000 description 19
- 230000006870 function Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种实现计算机多线程控制的方法及装置。本发明方法包括步骤:建立一个通用线程库;启动计算机中的应用程序时通过通用线程库创建多个线程;由通用线程库控制所述多个线程的运行。本发明装置包括:线程创建装置,用于在启动计算机中的应用程序时创建应用程序的多个线程;线程控制子装置,用于控制线程创建装置创建的应用程序的多个线程;线程运行装置,用于根据线程控制子装置的指令运行多个线程。利用本发明,可以使计算机系统实现完全自主管理的多线程支持,不但在不同的操作系统平台上提供相同的线程特性,而且在单CPU的操作系统上也可以支持多线程的运行,提高了系统资源的利用率,增强了系统性能。
Description
技术领域
本发明涉及计算机领域,具体涉及一种实现计算机多线程控制的方法及装置。
背景技术
多线程支持是现代操作系统的基本特征之一,也是中间件必须提供的功能。所谓中间件是一种用于提供跨平台编程的软件,是在计算机硬件和操作系统之上,支持应用软件开发和运行的系统软件,它能够使应用软件相对独立于计算机硬件和操作系统平台,为当今的大型分布式应用搭起了一个标准的平台。进程是资源管理的最小单位,线程是程序执行的最小单位。在操作系统设计上,从进程演化出线程,最主要的目的就是更好地支持SMP(对称多处理)以及减小(进程/线程)上下文切换开销。针对这两种不同的意义,分别开发出了核心级线程和用户级线程两种线程模型,其中核心级线程更利于并发使用多处理器的资源,而用户级线程则更多考虑的是上下文切换开销。目前线程主要的实现方法是用户级线程。多线程是把一个进程分成很多可执行线程,每一个线程都独立运行。用多线程编程可以提高应用程序响应,使多CPU系统更加有效,还可以改善程序结构,占用更少的系统资源,提高性能。用户级多线程是通过线程库来实现的。线程库支持信号,为可运行的程序排队,并负责同时操纵多任务。
目前,业界中间件(例如Java虚拟机)中提供的线程库通常是通过封装操作系统本来提供的线程接口实现的,使用这种线程库创建的线程实际上是操作系统的线程。其实现流程如图1所示。
这种线程功能还存在以下缺点:
(1)不同的操作平台上表现出不同的线程特性,即同一程序在不同的操作平台上的调度顺序是不同的。例如,在A平台上线程T1释放执行权后,线程T2被投入运行,而在B平台上线程T1释放执行权后,可能就是T3被投入运行,如图2所示。
(2)不能在不支持线程的平台上使用。
(3)通常这种线程只能提供所有底层操作系统平台的线程库功能的并集,因此使得其功能受到一定的限制。
(4)由于在原来的调用上进行封装,所以需要两套线程控制数据和处理,空间和时间效率会受影响。
发明内容
本发明的目的是克服现有技术的上述缺点,提供一种实现计算机多线程控制的方法及装置,更有效地利用系统资源,提高计算机性能。
本发明提供了一种实现计算机多线程控制的方法,其特征在于,所述方法包括步骤:
建立一个通用线程库;
启动所述计算机中的应用程序时通过所述计算机操作系统线程进入所述通用线程库,通过所述通用线程库的线程启动所述应用程序,所述应用程序通过所述通用线程库创建多个线程;
由所述通用线程库控制所述多个线程的运行。
所述方法还包括:在多进程操作系统中,启动所述计算机中的不同应用程序时分别通过所述通用线程库创建对应于所述不同应用程序的多个线程。
所述由所述通用线程库控制所述多个线程的运行的步骤包括:所述应用程序运行时由所述通用线程库控制所述多个线程之间的切换。
所述应用程序运行时由所述通用线程库控制所述多个线程之间的切换的步骤包括步骤:
由所述应用程序或中断处理例程通知所述通用线程库挂起当时运行的线程;
所述通用线程库根据所述多个线程的属性和/或状态选取下一个线程;
所述通用线程库调度所述下一个线程运行。
所述多个线程的属性包括:所述多个线程的优选级、线程号。
所述多个线程的状态包括:挂起状态和运行状态。
本发明还提供了一种实现上述方法的装置,所述装置包括:
线程创建装置,耦合到所述计算机,用于在启动所述计算机中的应用程序时创建所述应用程序的多个线程;
线程控制子装置,耦合到所述计算机,用于在运行所述计算机中的应用程序时控制所述线程创建装置创建的应用程序的多个线程;
线程运行装置,用于根据所述控制子装置的指令运行所述应用程序的多个线程。
优选地,所述线程控制子装置包括:
线程选取装置,用于接收所述线程控制子装置的指令,根据多个线程的属性和/或状态选取需要运行的线程;
线程调度装置,用于根据所述线程控制子装置的指令调度当前线程的运行状态。
优选地,所述线程调度装置还包括:
线程挂起装置,用于根据所述线程调度装置的指令暂停当前线程的运行;
线程恢复执行装置,用于根据所述线程调度装置的指令恢复所述暂停的线程的运行。
利用本发明,可以使计算机系统实现完全自主管理的多线程支持,不但在不同的操作系统平台上提供相同的线程特性,而且在单CPU的操作系统上也可以支持多线程的运行,提高了系统资源的利用率,增强了系统性能。
附图说明
图1是现有技术中中间件线程库实现流程图;
图2是现有技术中中间件线程库在不同操作平台上的线程特性示意图;
图3是本发明的优选实施例实现计算机多线程控制的方法的原理示意图;
图4是本发明方法在多线程操作系统中的原理示意图;
图5是本发明方法在单线程操作系统中的原理示意图;
图6是本发明的优选实施例实现计算机多线程控制的方法的步骤的流程图;
图7是图6所示的本发明方法的步骤流程中由通用线程库控制多个线程的运行的详细步骤流程图;
图8是本发明实现计算机多线程控制的装置的方框图。
具体实施方式
为了使本领域普通技术人员理解和实施本发明,现结合附图详细描绘实施例,通过这些实施例,本领域技术人员可以更容易地理解本发明的目的和技术方案及本发明的效果。
计算机中程序的运行都需要操作系统为该程序分配一个进程,而每一个进程至少需要一个线程作为它的指令执行体,进程管理着资源(比如CPU、内存、文件等等),而将线程分配到某个CPU上执行。一个进程可以拥有多个线程,此时,如果进程运行在SMP机器上,它就可以同时使用多个CPU来执行各个线程,达到最大程度的并行,以提高效率;同时,即使是在单CPU的机器上,采用多线程模型来设计程序,可以使设计更简洁、功能更完备,程序的执行效率也更高,例如采用多个线程响应多个输入,而此时多线程模型所实现的功能实际上也可以用多进程模型来实现,而与后者相比,线程的上下文切换开销就比进程要小多了,同时响应多个输入这样的功能,实际上就是共享了除CPU以外的所有资源。
无论在什么操作系统上编写程序,该操作系统至少要提供一个执行入口,如果操作系统是单线程的,从这个入口开始执行的程序从此占用CPU的全部时间;如果操作系统是多线程的,则从这个入口开始执行的程序占用其中一个线程的时间。把运行本线程库的程序所占用的操作系统线程作为母体线程,则本线程库中每一个线程都占用这个母体线程库的时间。这样,在操作系统看来,该程序只占用了一个线程的时间,而在使用该线程库的装置看来,则有多个线程在运行。
参见图3,图3示出了本发明的优选实施例实现计算机多线程控制的方法的原理示意图。其中,双线表示该调用可能调度多次,虚线表示调用是可选的;中断处理例程通知线程库超时的机制是可选的,一般用于特殊的环境:例如应用程序需要分时的特性。
当启动计算机中的应用程序运行时,首先通过计算机的操作系统的线程入口进入本线程库,再由本线程库的线程入口进入所述应用程序,该应用程序根据需要通过本线程库创建多个线程,然后根据应用程序的需要由本线程库独立执行这些线程的挂起和调度,控制多个线程的运行,不再占用操作系统的其它线程,也就是说,只需计算机的单个线程即可实现程序的多线程运行。这样,不论该程序移植到何种操作系统中,其线程特性都不会改变。
图4和图5分别示出了本发明方法在多线程操作系统和单线程操作系统中的原理示意图。
参照图4,操作系统包括三个线程T1、T2、T3,T2为前面所述的本线程库的母体线程,在此母体线程中还包含所述应用程序的多个线程,这些所述多个线程的切换及运行只在母体线程T2内,而与另外两个线程T1和T3无关。使应用程序的运行占用更少的系统资源。
再参照图5,在单线程的操作系统中,同样也可以实现应用程序的多线程运行,同时不会影响对多个线程的控制,使得在单进程的操作系统中,更好地提高应用程序的响应。
本发明就是在基于上述原理的基础上,提供了实现计算机多线程控制的方法及装置。下面将参照图6对此作详细说明。
参照图6,图6示出了本发明的优选实施例实现计算机多线程控制的方法的步骤的流程:
首先,在步骤61建立一个通用线程库;
然后,进到步骤62,通过计算机操作系统线程进入通用线程库;
进到步骤63,通过通用线程库的线程启动计算机中的应用程序;
进到步骤64,所述应用程序通过上述通用线程库创建多个线程;
然后,进到步骤65,在该应用程序运行过程中由所述通用线程库控制上述创建的多个线程的运行,直至该应用程序运行结束,退出该应用程序。
在本发明实现计算机多线程控制的方法中,多个线程的创建及控制都是基于一个通用线程库,在应用程序运行过程中由该通用线程库控制多个线程的运行,即上述步骤65,下面参照图7对其流程作一详细说明。
参照图7,图7是图6所示的本发明方法的步骤流程中由通用线程库控制多个线程的运行的详细步骤流程图;
首先在步骤71,启动第一个线程;
然后,进到步骤72,根据程序需要由应用程序通知通用线程库挂起当前线程或者由中断处理例程通知通用线程库挂起当前线程,比如,线程运行超时或者线程等待超时等;
进到步骤73,通用线程库根据多个线程的属性和/或状态选取下一个线程,其中,多个线程的属性包括多个线程的优选级、线程号等,多个线程的状态包括挂起状态和运行状态;
然后,进到步骤74,通用线程库调度所述选取的下一个线程运行;
进到步骤75,判断该应用程序的所有线程是否运行结束;
如果所有线程都已运行结束,则进到步骤76,结束该程序的运行,退出;
否则,返回步骤72,根据程序需要由应用程序通知通用线程库挂起当前线程或者由中断处理例程通知通用线程库挂起当前线程。
本发明还提供了一种实现上述方法的装置,下面参照图8对此装置作进一步的说明。
参照图8,图8是本发明实现计算机多线程控制的装置的方框图。本装置由三部分组成:线程创建装置81、线程控制子装置80和线程运行装置82。其中,线程创建装置81耦合到计算机83,用于在启动计算机83中的应用程序时创建该应用程序的多个线程;线程控制子装置80耦合到计算机83,用于在运行计算机83中的应用程序时控制线程创建装置81创建的应用程序的多个线程;线程运行装置82,用于根据控制子装置80的指令运行应用程序的多个线程。
上述线程控制子装置80由线程选取装置801和线程调度装置802组成。其中,线程选取装置801用于接收线程控制子装置80的指令,根据多个线程的属性和/或状态选取需要运行的线程;线程调度装置802用于根据线程控制子装置80的指令调度当前线程的运行状态。
上述线程调度装置802还包括:线程挂起装置803,用于根据线程调度装置802的指令暂停当前线程的运行;线程恢复执行装置804,用于根据线程调度装置802的指令恢复所述暂停的线程的运行。
本发明装置的工作过程如下:
启动计算机83的应用程序;
通过计算机83的操作系统的线程通知线程创建装置81创建该应用程序的多个线程;
由计算机83通知线程控制子装置80控制上述多个线程的运行;
线程控制子装置80收到通知后控制线程选取装置801选取第一个线程,并将所述选取的第一个线程交由线程运行装置82运行;
当所述第一个线程运行完毕或者第一个线程运行超时后,由线程控制子装置80通知线程调度装置802挂起该线程;
线程调度装置802收到通知后控制线程挂起装置803挂起该线程;
由线程控制子装置80控制线程选取装置801选取下一个线程,并将所述选取的下一个线程交由线程运行装置82运行;
当有被挂起的线程需要重新运行时,由线程控制子装置80通知线程调度装置802;
线程调度装置802收到通知后控制线程恢复执行装置804恢复该线程的运行;
重复上述过程,直到所有线程运行结束,退出该程序,释放该程序所占用的计算机操作系统的线程。
虽然通过实施例描绘了本发明,本领域普通技术人员知道,本发明有许多变形和变化而不脱离本发明的精神,例如,稍加变化,也可以通过多个线程实现相同的功能,希望所附的权利要求包括这些变形和变化而不脱离本发明的精神。
Claims (9)
1、一种实现计算机多线程控制的方法,其特征在于,所述方法包括步骤:
建立一个通用线程库;
启动所述计算机中的应用程序时通过所述计算机操作系统线程进入所述通用线程库,通过所述通用线程库的线程启动所述应用程序,所述应用程序通过所述通用线程库创建多个线程;
由所述通用线程库控制所述多个线程的运行。
2、如权利要求1所述的方法,其特征在于,还包括:在多进程操作系统中,启动所述计算机中的不同应用程序时分别通过所述通用线程库创建对应于所述不同应用程序的多个线程。
3、如权利要求1所述的方法,其特征在于,所述由所述通用线程库控制所述多个线程的运行的步骤包括:所述应用程序运行时由所述通用线程库控制所述多个线程之间的切换。
4、如权利要求3所述的方法,其特征在于,所述应用程序运行时由所述通用线程库控制所述多个线程之间的切换的步骤包括:
由所述应用程序或中断处理例程通知所述通用线程库挂起当时运行的线程;
所述通用线程库根据所述多个线程的属性和/或状态选取下一个线程;
所述通用线程库调度所述下一个线程运行。
5、如权利要求4所述的方法,其特征在于,所述多个线程的属性包括:所述多个线程的优选级、线程号。
6、如权利要求4所述的方法,其特征在于,所述多个线程的状态包括:挂起状态和运行状态。
7、一种实现计算机多线程控制的装置,其特征在于,所述装置包括:
线程创建装置,耦合到所述计算机,用于在启动所述计算机中的应用程序时创建所述应用程序的多个线程;
线程控制子装置,耦合到所述计算机,用于在运行所述计算机中的应用程序时控制所述线程创建装置创建的应用程序的多个线程;
线程运行装置,用于根据所述控制子装置的指令运行所述应用程序的多个线程。
8、如权利要求7所述的装置,其特征在于,所述线程控制子装置包括:
线程选取装置,用于接收所述线程控制子装置的指令,根据多个线程的属性和/或状态选取需要运行的线程;
线程调度装置,用于根据所述线程控制子装置的指令调度当前线程的运行状态。
9、如权利要求8所述的装置,其特征在于,所述线程调度装置还包括:
线程挂起装置,用于根据所述线程调度装置的指令暂停当前线程的运行;
线程恢复执行装置,用于根据所述线程调度装置的指令恢复所述暂停的线程的运行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2003101019045A CN100340976C (zh) | 2003-10-10 | 2003-10-10 | 一种实现计算机多线程控制的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2003101019045A CN100340976C (zh) | 2003-10-10 | 2003-10-10 | 一种实现计算机多线程控制的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1605984A CN1605984A (zh) | 2005-04-13 |
CN100340976C true CN100340976C (zh) | 2007-10-03 |
Family
ID=34756287
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2003101019045A Expired - Lifetime CN100340976C (zh) | 2003-10-10 | 2003-10-10 | 一种实现计算机多线程控制的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100340976C (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100430898C (zh) * | 2006-12-20 | 2008-11-05 | 金魁 | 一种多线程管理的应用系统 |
CN102750132B (zh) * | 2012-06-13 | 2015-02-11 | 深圳中微电科技有限公司 | 多线程虚拟流水线处理器的线程控制和调用方法及其处理器 |
CN103324600B (zh) * | 2013-04-01 | 2016-03-23 | 山东鲁能软件技术有限公司 | 运行计算模块的系统及其运行方法 |
CN111168666B (zh) * | 2019-12-12 | 2022-01-07 | 北京轩宇智能科技有限公司 | 一种单线程机械臂实现多线程处理的方法及机械臂 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1276888A (zh) * | 1997-10-23 | 2000-12-13 | 国际商业机器公司 | 在多线程处理器中选择线程切换事件的方法和装置 |
-
2003
- 2003-10-10 CN CNB2003101019045A patent/CN100340976C/zh not_active Expired - Lifetime
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1276888A (zh) * | 1997-10-23 | 2000-12-13 | 国际商业机器公司 | 在多线程处理器中选择线程切换事件的方法和装置 |
Non-Patent Citations (5)
Title |
---|
基于优先级的实时中间件的研究与实现 郭长国,中国优秀博硕士学位论文全文数据库 2002 * |
实时线程库研究与实现 许勇,中国优秀博硕士学位论文全文数据库 2002 * |
实时线程库研究与实现 许勇,郭长国,贾焰,计算机工程与应用,第12卷 2002 * |
西安电子科技大学出版社 汤子瀛,哲凤屏,汤小丹,计算机操作系统,第1卷 1996 * |
计算机操作系统 汤子瀛 哲凤屏 汤小丹,59-60,西安电子科技大学出版社 1996 * |
Also Published As
Publication number | Publication date |
---|---|
CN1605984A (zh) | 2005-04-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100342342C (zh) | 支持多进程的Java虚拟机实现方法 | |
CN102541653B (zh) | 一种多任务线程池调度方法和系统 | |
CN100346307C (zh) | Java操作系统中实时任务调度的实现方法 | |
CN1208722C (zh) | 监视和处理数据处理系统中相关线程事件的方法和设备 | |
US9858115B2 (en) | Task scheduling method for dispatching tasks based on computing power of different processor cores in heterogeneous multi-core processor system and related non-transitory computer readable medium | |
CN1499339A (zh) | 管理计算机系统中电源的装置和方法 | |
CN1801101A (zh) | Java操作系统中线程的实现和线程状态切换的方法 | |
CN1825286A (zh) | 嵌入式sram操作系统线程实现和线程状态转换的方法 | |
CN101055533A (zh) | 一种多线程处理器动态内存管理系统及方法 | |
CN1910554A (zh) | 多处理器系统中处理器任务迁移的方法与装置 | |
CN1582428A (zh) | 用于在非均衡存储器存取计算机系统中调度任务的方法和设备 | |
CN100347676C (zh) | 基于PowerPC处理器的车用操作系统中断管理方法 | |
CN1842769A (zh) | 用于在多线程微处理器中对并行指令流进行初始化的指令 | |
CN1760839A (zh) | 帮助多端口主机适配器的端口测试的装置、系统和方法 | |
CN1828541A (zh) | Java操作系统中定时任务的实现方法 | |
CN101075196A (zh) | 便携式电子装置及加载便携式电子装置的资源数据的方法 | |
CN101414270A (zh) | 硬件辅助的辅核任务动态优先级调度的实现方法 | |
CN100351793C (zh) | 支持osek标准的嵌入式实时操作系统的任务调度方法 | |
CN1423456A (zh) | 共享线程实现和调度方法 | |
CN1945541A (zh) | 处理操作信息传送控制系统和方法 | |
CN100340976C (zh) | 一种实现计算机多线程控制的方法及装置 | |
CN1637712A (zh) | 中断控制装置及控制方法 | |
CN1855067A (zh) | 一种实时操作系统中任务挂起状态监控方法 | |
CN114661460A (zh) | 面向异构众核处理器的ai框架两级并行加速方法 | |
CN1828543A (zh) | Java操作系统中实时任务调度方法 |
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 | ||
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20160627 Address after: California, USA Patentee after: SNAPTRACK, Inc. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |
|
CX01 | Expiry of patent term |
Granted publication date: 20071003 |
|
CX01 | Expiry of patent term |