程序的线程群组管理方法

文档序号:6468791阅读:144来源:国知局
专利名称:程序的线程群组管理方法
技术领域
本发明涉及一种线程管理方法,特别是涉及一种在程序的线程群组中,限定线程
同时运行个数与并结合权限法则的程序的线程群组管理方法。
背景技术
—般而言,电子计算机(或电子设备)所安装的作业系统,或执行的应用程序中, 每一个程序(Process)容许多个线程(thread,或称为执行绪,本文均称为线程)存在并 同时执行。然而,各线程在运行时,必然需要系统或电子计算机具有的硬件资源或软件资 源,当此等线程需要存取到程序中同一个资源(Resource)时,易发生资源冲突(Resource contention)现象与竞争条件(Race Condition)。 一般解决方式是以信号(Semaphore)法 则进行处理。 请同时参阅图1A与图IB所示,是多个线程争取一竞争资源的示意图与程序编码 示意图。此程序110包含一第一线程111、一第二线程112与一第三线程113,此三线程争 取一竞争资源120。 此程序110即为图IB所示程序区段130,其中副程序131与回呼程序132是需控 制竞争资源120以进行相关数据的运算。当第一线程111执行至副程序131,是先提出一信 号(Sem即hore)请求而取得竞争资源120的控制权,以进行数据的存取与计算。此时,竞争 资源120处于被保护中而无法再由第二线程112或第三线程113进行存取。
运行回呼程序132时,为避免回呼程序132需取得相同的竞争资源120,使得第 一线程111因竞争资源120被保护而无法取得,进而产生死结,故需令第一线程111先释 放对竞争资源120的控制权,即提出释放信号(Sem即hore)。依此方式,不断提出与释放 信号(Semaphore),使第一线程111在执行副程序131与回呼程序132时皆不会产生死结 (Deadlock)并完成其所需运算。 然而还有其他问题需要解决,即为第一线程在副程序释放信号(Sam印hore)以 执行回呼程序,以及在回呼程序中释放信号(Sam印hore)而返回副程序期间,其信号 (Sam印hore)极可能被第二线程或第三线程取得而对竞争资源进行数据运算,进而更动第 一线程原计算结果,然先前技术并未提供预防计算结果被更动的技术特征,因此第一线程 即无法取得正确的计算数据。由此延伸,作业系统或电子设备即可能因此而执行错误的软 件运算,或硬件执行错误的运作行为。 有鉴于上述现有的线程管理方法存在的缺陷,本发明人基于从事此类产品设计制 造多年丰富的实务经验及专业知识,并配合学理的运用,积极加以研究创新,以期创设一种 新的程序的线程群组管理方法,能够改进一般现有的线程管理方法,使其更具有实用性。经 过不断的研究、设计,并经反复试作及改进后,终于创设出确具实用价值的本发明。

发明内容
本发明的目的在于,克服现有的线程管理方法存在的缺陷,而提供一种新的程序的线程群组管理方法,所要解决的技术问题是使其在程序中,将线程群组化,并限定线程群 组同时间仅有一线程运作,而且避免死结并防止取得错误计算数据的一种程序的线程群组 管理方法。 本发明的目的及解决其技术问题是采用以下技术方案来实现的。依据本发明提 出的一种程序的线程群组管理方法,是应用于安装有作业系统或至少一应用程序的电子设 备,其包括以下步骤利用一群组调度(排程即调度,本文均称为调度)单元取得可供一第 一线程运作的一执行许可并侦测该执行许可是否给予其它线程,以决定是否赋予该执行许 可至该第一线程;侦测该线程群组是否有一第二线程执行中,以决定是否停止该第一线程 并等待该第二线程完成;允许该第一线程取得所需竞争资源以完成该第一线程的运算;以 及取得该第一线程释放的该竞争资源后判断是否有一最高权限的第三线程存在,以唤醒该 最高权限的该第三线程。 本发明的目的及解决其技术问题还可采用以下技术措施进一步实现。 前述的线程群组管理方法,其中所述的侦测该线程群组是否有一第二线程执行的
步骤包含下列步骤侦测该竞争资源是否被该第二线程占用,若侦测结果为是,则停止该第
一线程并等待该第二线程完成,若侦测结果为否,则允许该第一线程取得所需竞争资源以
完成该第一线程。 前述的线程群组管理方法,其中所述的侦测该线程群组是否有一第二线程执行中 步骤是包含下列步骤侦测是否有任一该竞争资源被限制给该第二线程使用,若侦测结果 为是,停止该第一线程并等待该第二线程完成,若侦测结果为否,则允许该第一线程取得所 需竞争资源以完成该第一线程。 前述的线程群组管理方法,其中所述的第一线程取得所需竞争资源时,该群组调 度单元是限定该竞争资源仅为该第一线程使用,直至该第一线程完成。 前述的线程群组管理方法,其中所述的决定是否赋予该执行许可至该第一线程步
骤是包含下列步骤利用该群组调度单元接收该第一线程发出的该执行许可的请求;判断
该执行许可是否授予其它线程,若否,授予该执行许可至该第一线程,若是,储存该第一线 程至一等待队列。 前述的线程群组管理方法,其中所述的储存该第一线程至一等待队列步骤更包含 下列步骤停止该第一线程的执行;给予该第一线程一权限值;以及加入具有该权限值之 该第一线程于该等待队列。 前述的线程群组管理方法,其中所述的取得该第一线程释放的该竞争资源步骤是 包含下列步骤接收该第一线程的资源让与请求;记录该第一线程释放的该竞争资源;以 及开放该竞争资源的使用权。 前述的线程群组管理方法,其中所述的判断是否有一最高权限的第三线程存在步 骤是包含下列步骤若判断有该最高权限的第三线程存在,取出该最高权限的第三线程并 使该最高权限的第三线程执行。 前述的线程群组管理方法,其中所述的取出该最高权限的第三线程并使其执行步
骤还包含下列步骤侦测最高权限的该第三线程是否仅为一个,若否,依据一限定法则取出
其一该第三线程并使其执行,若是,取出最高权限的该第三线程并使其执行。 前述的线程群组管理方法,其中所述的限定法则是先进先出调度法则、轮回式调
5度法则或最短行程优先调度法则。 前述的线程群组管理方法,其中所述的每一该线程群组是对应至少一竞争资源。
本发明与现有技术相比具有明显的优点和有益效果。由以上可知,为达到上述目 的,本发明提供了一种程序的线程群组管理方法,是应用于安装有作业系统或至少一应用 程序的电子设备,此程序具有至少一个线程群组,每一线程群组对应至少一竞争资源。此方 法中,利用一群组调度单元取得可供一第一线程运作的一执行许可并侦测执行许可是否给 予其它线程,以决定是否赋予执行许可至第一线程。接着侦测线程群组中是否有一第二线 程执行中,以决定是否停止该第一线程并等待该第二线程完成。之后允许第一线程取得所 需竞争资源以完成第一线程的运算。而第一线程运行完成后,群组调度单元取得第一线程 释放的竞争资源后,判断在一组第三线程中是否有一最高权限的第三线程存在,若有,则唤 醒最高权限的第三线程并使其执行。 本发明所揭露的程序的线程群组管理方法中,其等待队列权限最高的第三线程数
量不为一时,是通过一限定法则取出其一线程并将其唤醒执行。此限定法则可为先进先
出调度法则(First In First 0ut, FIFO)、最短行程优先调度法则(Shortest Job First
Scheduling, SJF)或轮回式调度法则(Round-Robin Scheduling, R. R)。 借由上述技术方案,本发明程序的线程群组管理方法至少具有下列优点及有益效
果 —、线程群组在同一时间仅允许一线程进行运算,以避免资源冲突(Resource Contention)与竞争条件(Race Condition)。 二、群组调度单元侦测有线程正执行中或未完成时,是停止其它线程,使执行中的
线程可完成其运算后再释放竞争资源。避免执行中的线程在执行空档期间,竞争资源被其
它线程取得而更改其内部数据,以取得错误的运算数据,造成错误的计算结果。 综上所述,本发明是有关于一种程序的线程群组管理方法,利用一群组调度单元
取得可供一第一线程运作的一执行许可,群组调度单元侦测线程群组有一第二线程执行时
停止第一线程的运作,在第二线程完成后才发出执行许可,使第一线程取得所需竞争资源
并执行其运作。第一线程会于执行完成时释放取得的竞争资源,群组调度单元则呼叫等待
队列中最高权限的第三线程,并重复直至线程全数完成。藉此方法,避免一线程因执行回呼
机制,而让其它线程趁机使用其所需资源,并防止线程被迫经历多个不同阶段后才完成工
作,进而取得正确的数据。本发明具有上述诸多优点及实用价值,其不论在线程管理方法或
功能上皆有较大的改进,,在技术上有显著的进步,并产生了好用及实用的效果,且较现有
的线程管理方法具有增进的突出功效,从而更加适于实用,诚为一新颖、进步、实用的新设
计。而且,此方法可应用于各种不同具有作业系统、具有线程运算能力的电子计算机或电子
设备,进一步的提升此方法的适用范围。 上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段, 而可依照说明书的内容予以实施,并且为了让本发明的上述和其他目的、特征和优点能够 更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。


图1A是先前技术的线程争取竞争资源的示意图。
6
图IB是先前技术的程序的编码示意图。 图2A是本发明线程群组管理方法较佳实施例的流程图。 图2B是本发明线程群组管理方法较佳实施例的细部流程图。 图2C是本发明线程群组管理方法较佳实施例的细部流程图。 图3A是本发明线程群组建构实施例的示意图。 图3B是本发明线程群组管理方法的竞争资源争取实施例的示意图。 图3C是本发明程序实施例的编码示意图。110:程序111:第一线程112:第二线程113:第三线程120:竞争资源130:程序区段131:副程序132:回呼程序310:程序311:第一线程312:第二线程313:第三线程320:竞争资源321:群组调度单元330:线程群组340:程序区段341:副程序342:回呼程序350:资源读取P艮制
具体实施例方式
为使对本发明的目的、构造特征及其功能有进一步的了解,兹配合相关实施例及 图式详细说明如下 请同时参阅图2A、图2B与图2C所示,是本发明线程群组管理方法较佳实施例的流 程图与细部流程图,请同时参阅图3B所示,是本发明线程群组管理方法的竞争资源争取实 施例的示意图。本发明较佳实施例的线程群组管理方法中的第一线程311为发出执行许可 请求的线程,第二线程312为执行中的线程,第三线程313为等待中的线程。而且此方法应 用于安装有作业系统或至少一应用程序的电子设备,该线程群组管理方法包含下列步骤
利用一群组调度单元321取得可供一第一线程311运作的执行许可并侦测执行许 可是否给予其它线程(第二线程312与第三线程313),以决定是否赋予执行许可至第一线 程311(步骤S210)。 先利用群组调度单元321接收第一线程311发出的执行许可的请求(步骤S211), 此群组调度单元321是为一般电子计算机中,可运行程序、线程的调度与运算行为的硬 件组件,如中央处理器(Central Processing Unit, CPU)、微处理器(Micro Processing
Unit, MPU)、资料控制晶片......等多类不同的硬件组件,或是烧录有管理线程的程序码
并具有执行此程序码能力的硬件组件。此第一线程311是程序310新产生的线程或是先前 等待中的第三线程313,并从所有第三线程313中取出权限最高者,执行许可包含竞争资源 320的控制权。此竞争资源320指系统所能使用的硬件硬件与软件软件,硬件硬件即如硬 盘、软盘、显示卡、晶片、内存、荧幕等实体装置;软件即如程序码所构成的函数、物件、逻辑 运算元件、副程序等程序。取得竞争资源320即代表取得此系统的某一实体装置或某一程 序的控制权。
群组调度单元321是判断执行许可是否授予其它线程(步骤S212),若判定结果为
否,群组调度单元321是授予执行许可至第一线程311 (步骤S213);若是,则储存第一线程311至一等待队列(步骤S214)。 储存第一线程311时,群组调度单元321停止第一线程311的执行,接着给予此第一线程311 —权限值,最后加入具有此权限值之第一线程311于等待队列中。
当群组调度单元321在第一线程311开始执行时,先侦测线程群组330是否有一第二线程312执行中(步骤S220)。而判断方式包含下列两种 其一,侦测竞争资源320是否被第二线程312占用,或是正在执行相关函数或物件。因任一线程运行时,竞争资源320被占用、函数或物件被运行等两种状态必然有一个成 其二,侦测是否有任一竞争资源320被限制给第二线程312使用。因任一线程执行时,群组调度单元321将限制其所需的竞争资源320,以禁止其它线程占用,直至第二线程312完成。避免第二线程312因呼叫函数或进行回呼机制而暂时释放竞争资源320时,被其它线程趁机占用。 若判定未有第二线程312执行时,则允许第一线程311取得所需竞争资源320以完成第一线程311的运算(步骤S230);若判定有一第二线程312执行中,则停止第一线程311并等待第二线程312完成(步骤S240),的后再执行步骤S230。 此步骤主要避免第二线程312在运行中进行回呼机制(Call BackFunction)或副程序(Sub Routine)而释放竞争资源320期间,群组调度单元321因取得资源让与请求而误将竞争资源320的控制权交予第一线程311。故在判定有任一第二线程312处于执行且未完成时,即停止第一线程311,使先前执行的第二线程312可持续保有竞争资源320而完成其工作。 取得第一线程311释放的竞争资源320后判断是否有一最高权限的第三线程313
存在,以唤醒最高权限的第三线程313 (步骤S250)。此步骤中,群组调度单元321接收第一
线程311的资源让与请求(步骤S251),接着记录第一线程311释放的竞争资源320(步骤
S252),最后开放竞争资源320的使用权(步骤S253),以供其它线程使用。 接着侦测是否有一最高权限的第三该线程313存在(步骤S254),如前所述,若先
前判定不可执行、被强制停止的线程皆会储存在等待队列中,故仅需侦测等待队列是否储
存一最高权限的第三线程313即可。若否,则结束群组调度单元321(步骤S256);若是,则
从等待队列中取出最高权限的第三线程313并使其执行(步骤S255)。 然而,群组调度单元321先侦测最高权限的第三线程313是否仅为一个(理所当
然具有最高权限),若是,则执行步骤S255 ;若否,则依据一限定法则取出其一最高权限的
第三线程313并使其执行。限定法则是 其一,先进先出法则(First In First Out),在多个最高权限的线程中,取出最早储存至等待队列的线程并使其执行。 其二,轮回式调度法则(Round-Robin Scheduling, R. R),依据等待顺序而取出线程并使其执行。 其三,最短行程优先调度法则(Shortest Job First Scheduling, SJF),计算每一线程执行预定时间,从中选出最短执行时间的线程。
请同时参阅图3A至图3C所示,是本发明程序实施例的线程群组建构实施例的示意图、竞争资源争取示意图与程序编码示意图。 由图3A与图3B得知,此程序310包含至少一个线程群组330,而每一线程群组330包含至少一个线程、一群组调度单元321,并对应一竞争资源320。线程是受群组调度单元321的管理,以决定何者可取得竞争资源320。 图3C所示程序区段340是为程序310的主要程序编码,在此例中,程序区段包含有副程序(Sub-Routine)341,并设置有一回呼程序342作为回呼机制(Call BackFunction)。线程调度单元321具有设定一资源读取限制350的能力,资源读取限制350用以保护副程序341所需竞争资源320使其限定由执行副程序341的线程使用。同理,线程调度单元321具有解除资源读取限制350的能力,其用以解除执行副程序341所需的竞争资源320。 当第一线程311执行程序310区段至副程序341时,是请求线程调度单元321具有设定资源读取限制350,以保护第一线程311所需的竞争资源320,并对群组调度单元321提出执行许可请求(即竞争资源320的控制权),直到运算完成。 若程序310中间需提出回呼程序342,则第一线程311需先提出释放竞争资源320控制权(即为提出资源让与请求),再执行回呼程序342。而第一线程311在进行回呼程序342时,同样需提出执行许可请求与资源让与请求,以取得或释放竞争资源320的控制权,避免死结产生。然后再返回副程序341完成其运算,最后返回程序区段340,最后请求线程调度单元321解除资源读取限制350,进而解除竞争资源320的保护。 当第一线程311取得执行许可,而且第二线程312加入同一线程群组330时,群组调度单元321停止第二线程312执行并给予一权限值,最后加入第二线程312至一等待队列(图未示)中。 此外,第一线程311在副程序341与回呼程序342往返的执行空档中,群组调度单元321可能因第一线程311提出资源让与请求,导致误判第一线程311已完成,而将执行许可给予等待中的第二线程312或新加入的第三线程313。 但通过资源读取限制350保护第一线程311所需的竞争资源320,使得第二线程312或第三线程313无法取得第一线程311所需竞争资源320,同时让群组调度单元321得知第一线程311尚未完成,迫使第二线程312或第三线程313停止执行,返回等待队列,以等待第一线程311完成所有运算。 之后,群组调度单元321记录第一线程311所释放的竞争资源320,并就第二线程312与第三线程313取出权限值最高者,将之唤醒并执行。 当第二线程312与第三线程313皆完成,而群组调度单元321未取得新的线程,等待队列也不存在任一线程,群组调度单元321即结束自身的工作。 以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容作出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
权利要求
一种程序的线程群组管理方法,是应用于安装有作业系统或至少一应用程序的电子设备,其特征在于其包括以下步骤利用一群组调度单元取得可供一第一线程运作的一执行许可并侦测该执行许可是否给予其它线程,以决定是否赋予该执行许可至该第一线程;侦测该线程群组是否有一第二线程执行中,以决定是否停止该第一线程并等待该第二线程完成;允许该第一线程取得所需竞争资源以完成该第一线程的运算;以及取得该第一线程释放的该竞争资源后判断是否有一最高权限的第三线程存在,以唤醒该最高权限的该第三线程。
2. 根据权利要求1所述的程序的线程群组管理方法,其特征在于其中所述的侦测该线 程群组是否有一第二线程执行中步骤是包含下列步骤侦测该竞争资源是否被该第二线程占用,若侦测结果为是,则停止该第一线程并等待 该第二线程完成,若侦测结果为否,则允许该第一线程取得所需竞争资源以完成该第一线 程。
3. 根据权利要求1所述的程序的线程群组管理方法,其特征在于其中所述的侦测该线 程群组是否有一第二线程执行中步骤是包含下列步骤侦测是否有任一该竞争资源被限制给该第二线程使用,若侦测结果为是,停止该第一 线程并等待该第二线程完成,若侦测结果为否,则允许该第一线程取得所需竞争资源以完 成该第一线程。
4. 根据权利要求3所述的程序的线程群组管理方法,其特征在于其中所述的第一线程 取得所需竞争资源时,该群组调度单元是限定该竞争资源仅为该第一线程使用,直至该第 一线程完成。
5. 根据权利要求1所述的程序的线程群组管理方法,其特征在于其中所述的决定是否 赋予该执行许可至该第一线程步骤是包含下列步骤利用该群组调度单元接收该第一线程发出的该执行许可的请求;判断该执行许可是否授予其它线程,若否,授予该执行许可至该第一线程,若是,储存 该第一线程至一等待队列。
6. 根据权利要求5所述的程序的线程群组管理方法,其特征在于其中所述的储存该第 一线程至一等待队列步骤更包含下列步骤停止该第一线程的执行; 给予该第一线程一权限值;以及 加入具有该权限值之该第一线程于该等待队列。
7. 根据权利要求1所述的程序的线程群组管理方法,其特征在于其中所述的取得该第 一线程释放的该竞争资源步骤是包含下列步骤接收该第一线程的资源让与请求; 记录该第一线程释放的该竞争资源;以及 开放该竞争资源的使用权。
8. 根据权利要求1所述的程序的线程群组管理方法,其特征在于其中所述的判断是否 有一最高权限的第三线程存在步骤是包含下列步骤若判断有该最高权限的第三线程存在,取出该最高权限的第三线程并使该最高权限的 第三线程执行。
9. 根据权利要求8所述的程序的线程群组管理方法,其特征在于其中所述的取出该最高权限的第三线程并使其执行步骤还包含下列步骤侦测最高权限的该第三线程是否仅为一个,若否,依据一限定法则取出其一该第三线 程并使其执行,若是,取出最高权限的该第三线程并使其执行。
10. 根据权利要求9所述的程序的线程群组管理方法,其特征在于其中所述的限定法 则是先进先出调度法则、轮回式调度法则或最短行程优先调度法则。
11. 根据权利要求1所述的程序的线程群组管理方法,其特征在于其中所述的每一该 线程群组是对应至少一竞争资源。
全文摘要
本发明是有关于一种程序的线程群组管理方法,是应用于安装有作业系统或至少一应用程序的电子设备,是先利用一群组调度单元取得可供一第一线程运作的一执行许可,群组调度单元侦测线程群组有一第二线程执行时停止第一线程的运作,在第二线程完成后才发出执行许可,使第一线程取得所需竞争资源并执行其运作。第一线程会于执行完成时释放取得的竞争资源,群组调度单元则呼叫等待队列中最高权限的第三线程,并重复直至线程全数完成。藉此方法,避免一线程因执行回呼机制,而让其它线程趁机使用其所需资源,并防止线程被迫经历多个不同阶段后才完成工作,进而取得正确的数据。
文档编号G06F9/46GK101751293SQ200810186688
公开日2010年6月23日 申请日期2008年12月16日 优先权日2008年12月16日
发明者王然益, 陈志和 申请人:智邦科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1