專(zhuān)利名稱(chēng):程序的線程群組管理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種線程管理方法,特別是涉及一種在程序的線程群組中,限定線程
同時(shí)運(yùn)行個(gè)數(shù)與并結(jié)合權(quán)限法則的程序的線程群組管理方法。
背景技術(shù):
—般而言,電子計(jì)算機(jī)(或電子設(shè)備)所安裝的作業(yè)系統(tǒng),或執(zhí)行的應(yīng)用程序中, 每一個(gè)程序(Process)容許多個(gè)線程(thread,或稱(chēng)為執(zhí)行緒,本文均稱(chēng)為線程)存在并 同時(shí)執(zhí)行。然而,各線程在運(yùn)行時(shí),必然需要系統(tǒng)或電子計(jì)算機(jī)具有的硬件資源或軟件資 源,當(dāng)此等線程需要存取到程序中同一個(gè)資源(Resource)時(shí),易發(fā)生資源沖突(Resource contention)現(xiàn)象與競(jìng)爭(zhēng)條件(Race Condition)。 一般解決方式是以信號(hào)(Semaphore)法 則進(jìn)行處理。 請(qǐng)同時(shí)參閱圖1A與圖IB所示,是多個(gè)線程爭(zhēng)取一競(jìng)爭(zhēng)資源的示意圖與程序編碼 示意圖。此程序110包含一第一線程111、一第二線程112與一第三線程113,此三線程爭(zhēng) 取一競(jìng)爭(zhēng)資源120。 此程序110即為圖IB所示程序區(qū)段130,其中副程序131與回呼程序132是需控 制競(jìng)爭(zhēng)資源120以進(jìn)行相關(guān)數(shù)據(jù)的運(yùn)算。當(dāng)?shù)谝痪€程111執(zhí)行至副程序131,是先提出一信 號(hào)(Sem即hore)請(qǐng)求而取得競(jìng)爭(zhēng)資源120的控制權(quán),以進(jìn)行數(shù)據(jù)的存取與計(jì)算。此時(shí),競(jìng)爭(zhēng) 資源120處于被保護(hù)中而無(wú)法再由第二線程112或第三線程113進(jìn)行存取。
運(yùn)行回呼程序132時(shí),為避免回呼程序132需取得相同的競(jìng)爭(zhēng)資源120,使得第 一線程111因競(jìng)爭(zhēng)資源120被保護(hù)而無(wú)法取得,進(jìn)而產(chǎn)生死結(jié),故需令第一線程111先釋 放對(duì)競(jìng)爭(zhēng)資源120的控制權(quán),即提出釋放信號(hào)(Sem即hore)。依此方式,不斷提出與釋放 信號(hào)(Semaphore),使第一線程111在執(zhí)行副程序131與回呼程序132時(shí)皆不會(huì)產(chǎn)生死結(jié) (Deadlock)并完成其所需運(yùn)算。 然而還有其他問(wèn)題需要解決,即為第一線程在副程序釋放信號(hào)(Sam印hore)以 執(zhí)行回呼程序,以及在回呼程序中釋放信號(hào)(Sam印hore)而返回副程序期間,其信號(hào) (Sam印hore)極可能被第二線程或第三線程取得而對(duì)競(jìng)爭(zhēng)資源進(jìn)行數(shù)據(jù)運(yùn)算,進(jìn)而更動(dòng)第 一線程原計(jì)算結(jié)果,然先前技術(shù)并未提供預(yù)防計(jì)算結(jié)果被更動(dòng)的技術(shù)特征,因此第一線程 即無(wú)法取得正確的計(jì)算數(shù)據(jù)。由此延伸,作業(yè)系統(tǒng)或電子設(shè)備即可能因此而執(zhí)行錯(cuò)誤的軟 件運(yùn)算,或硬件執(zhí)行錯(cuò)誤的運(yùn)作行為。 有鑒于上述現(xiàn)有的線程管理方法存在的缺陷,本發(fā)明人基于從事此類(lèi)產(chǎn)品設(shè)計(jì)制 造多年豐富的實(shí)務(wù)經(jīng)驗(yàn)及專(zhuān)業(yè)知識(shí),并配合學(xué)理的運(yùn)用,積極加以研究創(chuàng)新,以期創(chuàng)設(shè)一種 新的程序的線程群組管理方法,能夠改進(jìn)一般現(xiàn)有的線程管理方法,使其更具有實(shí)用性。經(jīng) 過(guò)不斷的研究、設(shè)計(jì),并經(jīng)反復(fù)試作及改進(jìn)后,終于創(chuàng)設(shè)出確具實(shí)用價(jià)值的本發(fā)明。
發(fā)明內(nèi)容
本發(fā)明的目的在于,克服現(xiàn)有的線程管理方法存在的缺陷,而提供一種新的程序的線程群組管理方法,所要解決的技術(shù)問(wèn)題是使其在程序中,將線程群組化,并限定線程群 組同時(shí)間僅有一線程運(yùn)作,而且避免死結(jié)并防止取得錯(cuò)誤計(jì)算數(shù)據(jù)的一種程序的線程群組 管理方法。 本發(fā)明的目的及解決其技術(shù)問(wèn)題是采用以下技術(shù)方案來(lái)實(shí)現(xiàn)的。依據(jù)本發(fā)明提 出的一種程序的線程群組管理方法,是應(yīng)用于安裝有作業(yè)系統(tǒng)或至少一應(yīng)用程序的電子設(shè) 備,其包括以下步驟利用一群組調(diào)度(排程即調(diào)度,本文均稱(chēng)為調(diào)度)單元取得可供一第 一線程運(yùn)作的一執(zhí)行許可并偵測(cè)該執(zhí)行許可是否給予其它線程,以決定是否賦予該執(zhí)行許 可至該第一線程;偵測(cè)該線程群組是否有一第二線程執(zhí)行中,以決定是否停止該第一線程 并等待該第二線程完成;允許該第一線程取得所需競(jìng)爭(zhēng)資源以完成該第一線程的運(yùn)算;以 及取得該第一線程釋放的該競(jìng)爭(zhēng)資源后判斷是否有一最高權(quán)限的第三線程存在,以喚醒該 最高權(quán)限的該第三線程。 本發(fā)明的目的及解決其技術(shù)問(wèn)題還可采用以下技術(shù)措施進(jìn)一步實(shí)現(xiàn)。 前述的線程群組管理方法,其中所述的偵測(cè)該線程群組是否有一第二線程執(zhí)行的
步驟包含下列步驟偵測(cè)該競(jìng)爭(zhēng)資源是否被該第二線程占用,若偵測(cè)結(jié)果為是,則停止該第
一線程并等待該第二線程完成,若偵測(cè)結(jié)果為否,則允許該第一線程取得所需競(jìng)爭(zhēng)資源以
完成該第一線程。 前述的線程群組管理方法,其中所述的偵測(cè)該線程群組是否有一第二線程執(zhí)行中 步驟是包含下列步驟偵測(cè)是否有任一該競(jìng)爭(zhēng)資源被限制給該第二線程使用,若偵測(cè)結(jié)果 為是,停止該第一線程并等待該第二線程完成,若偵測(cè)結(jié)果為否,則允許該第一線程取得所 需競(jìng)爭(zhēng)資源以完成該第一線程。 前述的線程群組管理方法,其中所述的第一線程取得所需競(jìng)爭(zhēng)資源時(shí),該群組調(diào) 度單元是限定該競(jìng)爭(zhēng)資源僅為該第一線程使用,直至該第一線程完成。 前述的線程群組管理方法,其中所述的決定是否賦予該執(zhí)行許可至該第一線程步
驟是包含下列步驟利用該群組調(diào)度單元接收該第一線程發(fā)出的該執(zhí)行許可的請(qǐng)求;判斷
該執(zhí)行許可是否授予其它線程,若否,授予該執(zhí)行許可至該第一線程,若是,儲(chǔ)存該第一線 程至一等待隊(duì)列。 前述的線程群組管理方法,其中所述的儲(chǔ)存該第一線程至一等待隊(duì)列步驟更包含 下列步驟停止該第一線程的執(zhí)行;給予該第一線程一權(quán)限值;以及加入具有該權(quán)限值之 該第一線程于該等待隊(duì)列。 前述的線程群組管理方法,其中所述的取得該第一線程釋放的該競(jìng)爭(zhēng)資源步驟是 包含下列步驟接收該第一線程的資源讓與請(qǐng)求;記錄該第一線程釋放的該競(jìng)爭(zhēng)資源;以 及開(kāi)放該競(jìng)爭(zhēng)資源的使用權(quán)。 前述的線程群組管理方法,其中所述的判斷是否有一最高權(quán)限的第三線程存在步 驟是包含下列步驟若判斷有該最高權(quán)限的第三線程存在,取出該最高權(quán)限的第三線程并 使該最高權(quán)限的第三線程執(zhí)行。 前述的線程群組管理方法,其中所述的取出該最高權(quán)限的第三線程并使其執(zhí)行步
驟還包含下列步驟偵測(cè)最高權(quán)限的該第三線程是否僅為一個(gè),若否,依據(jù)一限定法則取出
其一該第三線程并使其執(zhí)行,若是,取出最高權(quán)限的該第三線程并使其執(zhí)行。 前述的線程群組管理方法,其中所述的限定法則是先進(jìn)先出調(diào)度法則、輪回式調(diào)
5度法則或最短行程優(yōu)先調(diào)度法則。 前述的線程群組管理方法,其中所述的每一該線程群組是對(duì)應(yīng)至少一競(jìng)爭(zhēng)資源。
本發(fā)明與現(xiàn)有技術(shù)相比具有明顯的優(yōu)點(diǎn)和有益效果。由以上可知,為達(dá)到上述目 的,本發(fā)明提供了一種程序的線程群組管理方法,是應(yīng)用于安裝有作業(yè)系統(tǒng)或至少一應(yīng)用 程序的電子設(shè)備,此程序具有至少一個(gè)線程群組,每一線程群組對(duì)應(yīng)至少一競(jìng)爭(zhēng)資源。此方 法中,利用一群組調(diào)度單元取得可供一第一線程運(yùn)作的一執(zhí)行許可并偵測(cè)執(zhí)行許可是否給 予其它線程,以決定是否賦予執(zhí)行許可至第一線程。接著偵測(cè)線程群組中是否有一第二線 程執(zhí)行中,以決定是否停止該第一線程并等待該第二線程完成。之后允許第一線程取得所 需競(jìng)爭(zhēng)資源以完成第一線程的運(yùn)算。而第一線程運(yùn)行完成后,群組調(diào)度單元取得第一線程 釋放的競(jìng)爭(zhēng)資源后,判斷在一組第三線程中是否有一最高權(quán)限的第三線程存在,若有,則喚 醒最高權(quán)限的第三線程并使其執(zhí)行。 本發(fā)明所揭露的程序的線程群組管理方法中,其等待隊(duì)列權(quán)限最高的第三線程數(shù)
量不為一時(shí),是通過(guò)一限定法則取出其一線程并將其喚醒執(zhí)行。此限定法則可為先進(jìn)先
出調(diào)度法則(First In First 0ut, FIFO)、最短行程優(yōu)先調(diào)度法則(Shortest Job First
Scheduling, SJF)或輪回式調(diào)度法則(Round-Robin Scheduling, R. R)。 借由上述技術(shù)方案,本發(fā)明程序的線程群組管理方法至少具有下列優(yōu)點(diǎn)及有益效
果 —、線程群組在同一時(shí)間僅允許一線程進(jìn)行運(yùn)算,以避免資源沖突(Resource Contention)與競(jìng)爭(zhēng)條件(Race Condition)。 二、群組調(diào)度單元偵測(cè)有線程正執(zhí)行中或未完成時(shí),是停止其它線程,使執(zhí)行中的
線程可完成其運(yùn)算后再釋放競(jìng)爭(zhēng)資源。避免執(zhí)行中的線程在執(zhí)行空檔期間,競(jìng)爭(zhēng)資源被其
它線程取得而更改其內(nèi)部數(shù)據(jù),以取得錯(cuò)誤的運(yùn)算數(shù)據(jù),造成錯(cuò)誤的計(jì)算結(jié)果。 綜上所述,本發(fā)明是有關(guān)于一種程序的線程群組管理方法,利用一群組調(diào)度單元
取得可供一第一線程運(yùn)作的一執(zhí)行許可,群組調(diào)度單元偵測(cè)線程群組有一第二線程執(zhí)行時(shí)
停止第一線程的運(yùn)作,在第二線程完成后才發(fā)出執(zhí)行許可,使第一線程取得所需競(jìng)爭(zhēng)資源
并執(zhí)行其運(yùn)作。第一線程會(huì)于執(zhí)行完成時(shí)釋放取得的競(jìng)爭(zhēng)資源,群組調(diào)度單元?jiǎng)t呼叫等待
隊(duì)列中最高權(quán)限的第三線程,并重復(fù)直至線程全數(shù)完成。藉此方法,避免一線程因執(zhí)行回呼
機(jī)制,而讓其它線程趁機(jī)使用其所需資源,并防止線程被迫經(jīng)歷多個(gè)不同階段后才完成工
作,進(jìn)而取得正確的數(shù)據(jù)。本發(fā)明具有上述諸多優(yōu)點(diǎn)及實(shí)用價(jià)值,其不論在線程管理方法或
功能上皆有較大的改進(jìn),,在技術(shù)上有顯著的進(jìn)步,并產(chǎn)生了好用及實(shí)用的效果,且較現(xiàn)有
的線程管理方法具有增進(jìn)的突出功效,從而更加適于實(shí)用,誠(chéng)為一新穎、進(jìn)步、實(shí)用的新設(shè)
計(jì)。而且,此方法可應(yīng)用于各種不同具有作業(yè)系統(tǒng)、具有線程運(yùn)算能力的電子計(jì)算機(jī)或電子
設(shè)備,進(jìn)一步的提升此方法的適用范圍。 上述說(shuō)明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段, 而可依照說(shuō)明書(shū)的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其他目的、特征和優(yōu)點(diǎn)能夠 更明顯易懂,以下特舉較佳實(shí)施例,并配合附圖,詳細(xì)說(shuō)明如下。
圖1A是先前技術(shù)的線程爭(zhēng)取競(jìng)爭(zhēng)資源的示意圖。
6
圖IB是先前技術(shù)的程序的編碼示意圖。 圖2A是本發(fā)明線程群組管理方法較佳實(shí)施例的流程圖。 圖2B是本發(fā)明線程群組管理方法較佳實(shí)施例的細(xì)部流程圖。 圖2C是本發(fā)明線程群組管理方法較佳實(shí)施例的細(xì)部流程圖。 圖3A是本發(fā)明線程群組建構(gòu)實(shí)施例的示意圖。 圖3B是本發(fā)明線程群組管理方法的競(jìng)爭(zhēng)資源爭(zhēng)取實(shí)施例的示意圖。 圖3C是本發(fā)明程序?qū)嵤├木幋a示意圖。110:程序111:第一線程112:第二線程113:第三線程120:競(jìng)爭(zhēng)資源130:程序區(qū)段131:副程序132:回呼程序310:程序311:第一線程312:第二線程313:第三線程320:競(jìng)爭(zhēng)資源321:群組調(diào)度單元330:線程群組340:程序區(qū)段341:副程序342:回呼程序350:資源讀取P艮制
具體實(shí)施例方式
為使對(duì)本發(fā)明的目的、構(gòu)造特征及其功能有進(jìn)一步的了解,茲配合相關(guān)實(shí)施例及 圖式詳細(xì)說(shuō)明如下 請(qǐng)同時(shí)參閱圖2A、圖2B與圖2C所示,是本發(fā)明線程群組管理方法較佳實(shí)施例的流 程圖與細(xì)部流程圖,請(qǐng)同時(shí)參閱圖3B所示,是本發(fā)明線程群組管理方法的競(jìng)爭(zhēng)資源爭(zhēng)取實(shí) 施例的示意圖。本發(fā)明較佳實(shí)施例的線程群組管理方法中的第一線程311為發(fā)出執(zhí)行許可 請(qǐng)求的線程,第二線程312為執(zhí)行中的線程,第三線程313為等待中的線程。而且此方法應(yīng) 用于安裝有作業(yè)系統(tǒng)或至少一應(yīng)用程序的電子設(shè)備,該線程群組管理方法包含下列步驟
利用一群組調(diào)度單元321取得可供一第一線程311運(yùn)作的執(zhí)行許可并偵測(cè)執(zhí)行許 可是否給予其它線程(第二線程312與第三線程313),以決定是否賦予執(zhí)行許可至第一線 程311(步驟S210)。 先利用群組調(diào)度單元321接收第一線程311發(fā)出的執(zhí)行許可的請(qǐng)求(步驟S211), 此群組調(diào)度單元321是為一般電子計(jì)算機(jī)中,可運(yùn)行程序、線程的調(diào)度與運(yùn)算行為的硬 件組件,如中央處理器(Central Processing Unit, CPU)、微處理器(Micro Processing
Unit, MPU)、資料控制晶片......等多類(lèi)不同的硬件組件,或是燒錄有管理線程的程序碼
并具有執(zhí)行此程序碼能力的硬件組件。此第一線程311是程序310新產(chǎn)生的線程或是先前 等待中的第三線程313,并從所有第三線程313中取出權(quán)限最高者,執(zhí)行許可包含競(jìng)爭(zhēng)資源 320的控制權(quán)。此競(jìng)爭(zhēng)資源320指系統(tǒng)所能使用的硬件硬件與軟件軟件,硬件硬件即如硬 盤(pán)、軟盤(pán)、顯示卡、晶片、內(nèi)存、熒幕等實(shí)體裝置;軟件即如程序碼所構(gòu)成的函數(shù)、物件、邏輯 運(yùn)算元件、副程序等程序。取得競(jìng)爭(zhēng)資源320即代表取得此系統(tǒng)的某一實(shí)體裝置或某一程 序的控制權(quán)。
群組調(diào)度單元321是判斷執(zhí)行許可是否授予其它線程(步驟S212),若判定結(jié)果為
否,群組調(diào)度單元321是授予執(zhí)行許可至第一線程311 (步驟S213);若是,則儲(chǔ)存第一線程311至一等待隊(duì)列(步驟S214)。 儲(chǔ)存第一線程311時(shí),群組調(diào)度單元321停止第一線程311的執(zhí)行,接著給予此第一線程311 —權(quán)限值,最后加入具有此權(quán)限值之第一線程311于等待隊(duì)列中。
當(dāng)群組調(diào)度單元321在第一線程311開(kāi)始執(zhí)行時(shí),先偵測(cè)線程群組330是否有一第二線程312執(zhí)行中(步驟S220)。而判斷方式包含下列兩種 其一,偵測(cè)競(jìng)爭(zhēng)資源320是否被第二線程312占用,或是正在執(zhí)行相關(guān)函數(shù)或物件。因任一線程運(yùn)行時(shí),競(jìng)爭(zhēng)資源320被占用、函數(shù)或物件被運(yùn)行等兩種狀態(tài)必然有一個(gè)成 其二,偵測(cè)是否有任一競(jìng)爭(zhēng)資源320被限制給第二線程312使用。因任一線程執(zhí)行時(shí),群組調(diào)度單元321將限制其所需的競(jìng)爭(zhēng)資源320,以禁止其它線程占用,直至第二線程312完成。避免第二線程312因呼叫函數(shù)或進(jìn)行回呼機(jī)制而暫時(shí)釋放競(jìng)爭(zhēng)資源320時(shí),被其它線程趁機(jī)占用。 若判定未有第二線程312執(zhí)行時(shí),則允許第一線程311取得所需競(jìng)爭(zhēng)資源320以完成第一線程311的運(yùn)算(步驟S230);若判定有一第二線程312執(zhí)行中,則停止第一線程311并等待第二線程312完成(步驟S240),的后再執(zhí)行步驟S230。 此步驟主要避免第二線程312在運(yùn)行中進(jìn)行回呼機(jī)制(Call BackFunction)或副程序(Sub Routine)而釋放競(jìng)爭(zhēng)資源320期間,群組調(diào)度單元321因取得資源讓與請(qǐng)求而誤將競(jìng)爭(zhēng)資源320的控制權(quán)交予第一線程311。故在判定有任一第二線程312處于執(zhí)行且未完成時(shí),即停止第一線程311,使先前執(zhí)行的第二線程312可持續(xù)保有競(jìng)爭(zhēng)資源320而完成其工作。 取得第一線程311釋放的競(jìng)爭(zhēng)資源320后判斷是否有一最高權(quán)限的第三線程313
存在,以喚醒最高權(quán)限的第三線程313 (步驟S250)。此步驟中,群組調(diào)度單元321接收第一
線程311的資源讓與請(qǐng)求(步驟S251),接著記錄第一線程311釋放的競(jìng)爭(zhēng)資源320(步驟
S252),最后開(kāi)放競(jìng)爭(zhēng)資源320的使用權(quán)(步驟S253),以供其它線程使用。 接著偵測(cè)是否有一最高權(quán)限的第三該線程313存在(步驟S254),如前所述,若先
前判定不可執(zhí)行、被強(qiáng)制停止的線程皆會(huì)儲(chǔ)存在等待隊(duì)列中,故僅需偵測(cè)等待隊(duì)列是否儲(chǔ)
存一最高權(quán)限的第三線程313即可。若否,則結(jié)束群組調(diào)度單元321(步驟S256);若是,則
從等待隊(duì)列中取出最高權(quán)限的第三線程313并使其執(zhí)行(步驟S255)。 然而,群組調(diào)度單元321先偵測(cè)最高權(quán)限的第三線程313是否僅為一個(gè)(理所當(dāng)
然具有最高權(quán)限),若是,則執(zhí)行步驟S255 ;若否,則依據(jù)一限定法則取出其一最高權(quán)限的
第三線程313并使其執(zhí)行。限定法則是 其一,先進(jìn)先出法則(First In First Out),在多個(gè)最高權(quán)限的線程中,取出最早儲(chǔ)存至等待隊(duì)列的線程并使其執(zhí)行。 其二,輪回式調(diào)度法則(Round-Robin Scheduling, R. R),依據(jù)等待順序而取出線程并使其執(zhí)行。 其三,最短行程優(yōu)先調(diào)度法則(Shortest Job First Scheduling, SJF),計(jì)算每一線程執(zhí)行預(yù)定時(shí)間,從中選出最短執(zhí)行時(shí)間的線程。
請(qǐng)同時(shí)參閱圖3A至圖3C所示,是本發(fā)明程序?qū)嵤├木€程群組建構(gòu)實(shí)施例的示意圖、競(jìng)爭(zhēng)資源爭(zhēng)取示意圖與程序編碼示意圖。 由圖3A與圖3B得知,此程序310包含至少一個(gè)線程群組330,而每一線程群組330包含至少一個(gè)線程、一群組調(diào)度單元321,并對(duì)應(yīng)一競(jìng)爭(zhēng)資源320。線程是受群組調(diào)度單元321的管理,以決定何者可取得競(jìng)爭(zhēng)資源320。 圖3C所示程序區(qū)段340是為程序310的主要程序編碼,在此例中,程序區(qū)段包含有副程序(Sub-Routine)341,并設(shè)置有一回呼程序342作為回呼機(jī)制(Call BackFunction)。線程調(diào)度單元321具有設(shè)定一資源讀取限制350的能力,資源讀取限制350用以保護(hù)副程序341所需競(jìng)爭(zhēng)資源320使其限定由執(zhí)行副程序341的線程使用。同理,線程調(diào)度單元321具有解除資源讀取限制350的能力,其用以解除執(zhí)行副程序341所需的競(jìng)爭(zhēng)資源320。 當(dāng)?shù)谝痪€程311執(zhí)行程序310區(qū)段至副程序341時(shí),是請(qǐng)求線程調(diào)度單元321具有設(shè)定資源讀取限制350,以保護(hù)第一線程311所需的競(jìng)爭(zhēng)資源320,并對(duì)群組調(diào)度單元321提出執(zhí)行許可請(qǐng)求(即競(jìng)爭(zhēng)資源320的控制權(quán)),直到運(yùn)算完成。 若程序310中間需提出回呼程序342,則第一線程311需先提出釋放競(jìng)爭(zhēng)資源320控制權(quán)(即為提出資源讓與請(qǐng)求),再執(zhí)行回呼程序342。而第一線程311在進(jìn)行回呼程序342時(shí),同樣需提出執(zhí)行許可請(qǐng)求與資源讓與請(qǐng)求,以取得或釋放競(jìng)爭(zhēng)資源320的控制權(quán),避免死結(jié)產(chǎn)生。然后再返回副程序341完成其運(yùn)算,最后返回程序區(qū)段340,最后請(qǐng)求線程調(diào)度單元321解除資源讀取限制350,進(jìn)而解除競(jìng)爭(zhēng)資源320的保護(hù)。 當(dāng)?shù)谝痪€程311取得執(zhí)行許可,而且第二線程312加入同一線程群組330時(shí),群組調(diào)度單元321停止第二線程312執(zhí)行并給予一權(quán)限值,最后加入第二線程312至一等待隊(duì)列(圖未示)中。 此外,第一線程311在副程序341與回呼程序342往返的執(zhí)行空檔中,群組調(diào)度單元321可能因第一線程311提出資源讓與請(qǐng)求,導(dǎo)致誤判第一線程311已完成,而將執(zhí)行許可給予等待中的第二線程312或新加入的第三線程313。 但通過(guò)資源讀取限制350保護(hù)第一線程311所需的競(jìng)爭(zhēng)資源320,使得第二線程312或第三線程313無(wú)法取得第一線程311所需競(jìng)爭(zhēng)資源320,同時(shí)讓群組調(diào)度單元321得知第一線程311尚未完成,迫使第二線程312或第三線程313停止執(zhí)行,返回等待隊(duì)列,以等待第一線程311完成所有運(yùn)算。 之后,群組調(diào)度單元321記錄第一線程311所釋放的競(jìng)爭(zhēng)資源320,并就第二線程312與第三線程313取出權(quán)限值最高者,將之喚醒并執(zhí)行。 當(dāng)?shù)诙€程312與第三線程313皆完成,而群組調(diào)度單元321未取得新的線程,等待隊(duì)列也不存在任一線程,群組調(diào)度單元321即結(jié)束自身的工作。 以上所述,僅是本發(fā)明的較佳實(shí)施例而已,并非對(duì)本發(fā)明作任何形式上的限制,雖然本發(fā)明已以較佳實(shí)施例揭露如上,然而并非用以限定本發(fā)明,任何熟悉本專(zhuān)業(yè)的技術(shù)人員,在不脫離本發(fā)明技術(shù)方案范圍內(nèi),當(dāng)可利用上述揭示的技術(shù)內(nèi)容作出些許更動(dòng)或修飾為等同變化的等效實(shí)施例,但凡是未脫離本發(fā)明技術(shù)方案內(nèi)容,依據(jù)本發(fā)明的技術(shù)實(shí)質(zhì)對(duì)以上實(shí)施例所作的任何簡(jiǎn)單修改、等同變化與修飾,均仍屬于本發(fā)明技術(shù)方案的范圍內(nèi)。
權(quán)利要求
一種程序的線程群組管理方法,是應(yīng)用于安裝有作業(yè)系統(tǒng)或至少一應(yīng)用程序的電子設(shè)備,其特征在于其包括以下步驟利用一群組調(diào)度單元取得可供一第一線程運(yùn)作的一執(zhí)行許可并偵測(cè)該執(zhí)行許可是否給予其它線程,以決定是否賦予該執(zhí)行許可至該第一線程;偵測(cè)該線程群組是否有一第二線程執(zhí)行中,以決定是否停止該第一線程并等待該第二線程完成;允許該第一線程取得所需競(jìng)爭(zhēng)資源以完成該第一線程的運(yùn)算;以及取得該第一線程釋放的該競(jìng)爭(zhēng)資源后判斷是否有一最高權(quán)限的第三線程存在,以喚醒該最高權(quán)限的該第三線程。
2. 根據(jù)權(quán)利要求1所述的程序的線程群組管理方法,其特征在于其中所述的偵測(cè)該線 程群組是否有一第二線程執(zhí)行中步驟是包含下列步驟偵測(cè)該競(jìng)爭(zhēng)資源是否被該第二線程占用,若偵測(cè)結(jié)果為是,則停止該第一線程并等待 該第二線程完成,若偵測(cè)結(jié)果為否,則允許該第一線程取得所需競(jìng)爭(zhēng)資源以完成該第一線 程。
3. 根據(jù)權(quán)利要求1所述的程序的線程群組管理方法,其特征在于其中所述的偵測(cè)該線 程群組是否有一第二線程執(zhí)行中步驟是包含下列步驟偵測(cè)是否有任一該競(jìng)爭(zhēng)資源被限制給該第二線程使用,若偵測(cè)結(jié)果為是,停止該第一 線程并等待該第二線程完成,若偵測(cè)結(jié)果為否,則允許該第一線程取得所需競(jìng)爭(zhēng)資源以完 成該第一線程。
4. 根據(jù)權(quán)利要求3所述的程序的線程群組管理方法,其特征在于其中所述的第一線程 取得所需競(jìng)爭(zhēng)資源時(shí),該群組調(diào)度單元是限定該競(jìng)爭(zhēng)資源僅為該第一線程使用,直至該第 一線程完成。
5. 根據(jù)權(quán)利要求1所述的程序的線程群組管理方法,其特征在于其中所述的決定是否 賦予該執(zhí)行許可至該第一線程步驟是包含下列步驟利用該群組調(diào)度單元接收該第一線程發(fā)出的該執(zhí)行許可的請(qǐng)求;判斷該執(zhí)行許可是否授予其它線程,若否,授予該執(zhí)行許可至該第一線程,若是,儲(chǔ)存 該第一線程至一等待隊(duì)列。
6. 根據(jù)權(quán)利要求5所述的程序的線程群組管理方法,其特征在于其中所述的儲(chǔ)存該第 一線程至一等待隊(duì)列步驟更包含下列步驟停止該第一線程的執(zhí)行; 給予該第一線程一權(quán)限值;以及 加入具有該權(quán)限值之該第一線程于該等待隊(duì)列。
7. 根據(jù)權(quán)利要求1所述的程序的線程群組管理方法,其特征在于其中所述的取得該第 一線程釋放的該競(jìng)爭(zhēng)資源步驟是包含下列步驟接收該第一線程的資源讓與請(qǐng)求; 記錄該第一線程釋放的該競(jìng)爭(zhēng)資源;以及 開(kāi)放該競(jìng)爭(zhēng)資源的使用權(quán)。
8. 根據(jù)權(quán)利要求1所述的程序的線程群組管理方法,其特征在于其中所述的判斷是否 有一最高權(quán)限的第三線程存在步驟是包含下列步驟若判斷有該最高權(quán)限的第三線程存在,取出該最高權(quán)限的第三線程并使該最高權(quán)限的 第三線程執(zhí)行。
9. 根據(jù)權(quán)利要求8所述的程序的線程群組管理方法,其特征在于其中所述的取出該最高權(quán)限的第三線程并使其執(zhí)行步驟還包含下列步驟偵測(cè)最高權(quán)限的該第三線程是否僅為一個(gè),若否,依據(jù)一限定法則取出其一該第三線 程并使其執(zhí)行,若是,取出最高權(quán)限的該第三線程并使其執(zhí)行。
10. 根據(jù)權(quán)利要求9所述的程序的線程群組管理方法,其特征在于其中所述的限定法 則是先進(jìn)先出調(diào)度法則、輪回式調(diào)度法則或最短行程優(yōu)先調(diào)度法則。
11. 根據(jù)權(quán)利要求1所述的程序的線程群組管理方法,其特征在于其中所述的每一該 線程群組是對(duì)應(yīng)至少一競(jìng)爭(zhēng)資源。
全文摘要
本發(fā)明是有關(guān)于一種程序的線程群組管理方法,是應(yīng)用于安裝有作業(yè)系統(tǒng)或至少一應(yīng)用程序的電子設(shè)備,是先利用一群組調(diào)度單元取得可供一第一線程運(yùn)作的一執(zhí)行許可,群組調(diào)度單元偵測(cè)線程群組有一第二線程執(zhí)行時(shí)停止第一線程的運(yùn)作,在第二線程完成后才發(fā)出執(zhí)行許可,使第一線程取得所需競(jìng)爭(zhēng)資源并執(zhí)行其運(yùn)作。第一線程會(huì)于執(zhí)行完成時(shí)釋放取得的競(jìng)爭(zhēng)資源,群組調(diào)度單元?jiǎng)t呼叫等待隊(duì)列中最高權(quán)限的第三線程,并重復(fù)直至線程全數(shù)完成。藉此方法,避免一線程因執(zhí)行回呼機(jī)制,而讓其它線程趁機(jī)使用其所需資源,并防止線程被迫經(jīng)歷多個(gè)不同階段后才完成工作,進(jìn)而取得正確的數(shù)據(jù)。
文檔編號(hào)G06F9/46GK101751293SQ200810186688
公開(kāi)日2010年6月23日 申請(qǐng)日期2008年12月16日 優(yōu)先權(quán)日2008年12月16日
發(fā)明者王然益, 陳志和 申請(qǐng)人:智邦科技股份有限公司