一種多任務線程池調度方法和系統的製作方法
2023-06-24 05:58:26 3
專利名稱:一種多任務線程池調度方法和系統的製作方法
技術領域:
本發明屬於視頻處理技術領域,具體涉及一種多任務線程池調度方法和系統。
背景技術:
在圖像/視頻後期計算機處理過程中,由於算法的複雜性,將導致節目製作的效率不高。但是隨著計算機水平的不斷提高,具有多核CPU的計算機不斷普及,為提高圖像 /視頻後期處理時的系統的實時性提供了硬體支持。為了充分利用現有的硬體資源,一種可行的做法是儘可能啟動多線程讓CPU都工作起來,但是實際情況並不是啟動的CPU越多越好,當線程數到達某個數值之後,隨著新線程的加入,系統對單一任務的響應時間越來越長,越來越慢,而且如果再繼續增多的話,貌似內存要溢出了,而且響應時間也變成了無限長,直到任何一個任務都無法被完成。所以,在實際應用中,需要根據實際情況合理配置線程才能達到最好的效果。線程池是一種多線程處理形式,處理過程中將任務添加到隊列,然後在創建線程後自動啟動這些任務。線程池線程都是後臺線程。每個線程都使用默認的堆棧大小,以默認的優先級運行,並處於多線程單元中。如果某個線程在託管代碼中空閒(如正在等待某個事件),則線程池將插入另一個輔助線程來使所有處理器保持繁忙。如果所有線程池線程都始終保持繁忙,但隊列中包含掛起的工作,則線程池將在一段時間後創建另一個輔助線程但線程的數目永遠不會超過最大值。超過最大值的線程可以排隊,但他們要等到其他線程完成後才啟動。在在現有的圖像/視頻後期計算機處理過程中,還沒有發現使用線程池的調度, 線程都是需要線程的時候就直接創建,使用完成後直接銷毀線程了。但是線程的創建和銷毀線程是需要代價的,創建一個新的線程的時間大概需要消耗系統幾百毫秒的時間,另外還需要消耗內存等其他資源,總之就是反覆的創建和銷毀線程是不利的。
發明內容
針對現有技術中存在的缺陷,本發明的目的是提供一種多任務線程池調度方法和系統。該方法和系統在對圖像/視頻進行後期計算機處理過程中能夠建立線程池並對所有線程進行分類管理,並通過建立線程的創建和回收機制,避免資源浪費,提高了線程的利用率。為達到以上目的,本發明採用的技術方案是一種多任務線程池調度方法,包括以下步驟(1)根據任務算法實現目的的不同,對任務進行分類,並設定任務線程的優先級;(2)根據任務線程的優先級為任務建立線程池;(3)根據需要執行的任務線程的優先級選擇與該優先級相對應的線程池;(4)查看線程池中是否存在空閒的線程,若是,則進行任務算法與該線程的關聯, 啟動線程調度算法執行任務;若否,則創建新的線程進行任務算法與該線程的關聯,啟動線程調度算法執行任務;(5)將任務執行結束後的線程回收到線程池中。進一步,如上所述的多任務線程池調度方法,所述線程的個數是根據實際CPU的個數進行創建的。進一步,如上所述的多任務線程池調度方法,步驟(1)中所述任務線程的優先級是由用戶來設定的。再進一步,如上所述的多任務線程池調度方法,所述線程池具有線程的創建與回收功能。更進一步,如上所述的多任務線程池調度方法,步驟中進行任務算法與線程的關聯,啟動線程調度算法執行任務是通過設置回調函數來實現的;所述回調函數是用戶根據需要進行設置的,線程在被CPU調度時將通過回調該函數進行任務算法的執行,完成任務。一種多任務線程池調度系統,包括以下裝置任務分類裝置用於根據任務算法實現目的的不同,對任務進行分類,並進行任務線程的優先級的設定;線程池創建裝置用於根據任務線程的優先級進行線程池的建立;線程池選擇裝置用於根據需執行的任務線程的優先級進行與該優先級相對應的線程池的選擇;任務執行裝置用於進行任務算法與線程的關聯,啟動線程調度算法進行任務的執行;線程回收裝置用於將任務執行結束後的線程回收到線程池。再進一步,如上所述的多任務線程池調度系統,所述任務執行裝置包括線程選擇模塊,所述線程選擇模塊用於查看線程池中是否存在空閒的線程,若是,則進行任務的執行;若否,則創建新的線程進行任務的執行。更進一步,如上所述的多任務線程池調度系統,所述任務執行裝置的功能是通過設置回調函數來實現的;所述回調函數是用戶根據需要進行設置的,線程在被CPU調度時將通過回調該函數進行任務算法的執行,完成任務。本發明的效果在於採用本發明所述的方法,在圖像/視頻後期計算機處理過程中,根據計算機實際CPU個數創建線程個數,並可以建立線程池並對所有線程進行分類管理,從而提高了線程的利用率。此外,本發明中設置了線程的創建與回收裝置,提高了線程的利用率,避免了資源浪費。
圖1是本發明一種多任務線程池調度系統的結構圖;圖2是本發明一種多任務線程池調度方法的流程圖。
具體實施例方式下面結合具體實施方式
和附圖對本發明進行詳細描述。如圖1所示,為本發明一種多任務線程池調度系統的結構圖,包括以下裝置
任務分類裝置11 用於根據任務算法實現目的的不同,對任務進行分類,並進行任務線程的優先級的設定;線程池創建裝置12 用於根據任務線程的優先級進行線程池的建立;線程池選擇裝置13 用於根據需執行的任務線程的優先級進行與該優先級相對應的線程池的選擇;任務執行裝置14 用於進行任務算法與線程的關聯,啟動線程調度算法進行任務的執行。其中,任務執行裝置14包括線程選擇模塊,該線程選擇模塊用於查看線程池中是否存在空閒的線程,若是,則進行任務的執行;若否,則創建新的線程進行任務的執行。任務算法與線程的關聯,啟動線程調度算法進行任務的執行是通過設置回調函數來實現的,回調函數是用戶根據需要進行設置的,線程在被CPU調度時將通過回調該函數進行任務算法的執行,完成任務。線程回收裝置15 用於將任務執行結束後的線程回收到線程池。如圖2所示,為基於圖1中多任務線程池調度系統的一種多任務線程池調度方法的流程圖,包括以下步驟步驟S21 對任務進行分類,設定任務線程的優先級;根據任務算法實現目的的不同,對任務進行分類,並設定任務線程的優先級。根據算法實現的目的不同分為不同類型的任務,每種任務可以由用戶來設定該任務線程的優先級。例如可以分為特效處理任務,編碼解碼任務,用戶通過定製線程優先級決定了每一類任務被CPU執行的優先度。線程是進程(應用程式)的一個實體,是CPU調度和分派的基本單位。假如系統有一個CPU,有兩個任務需要處理,如果單線程處理,任務2需要等待任務1結束之後才能開始處理,如果任務1有50%的時間處於鎖定狀態,那CPU就有50%的空閒時間被浪費掉了。假設有兩個任務需要處理,如果有兩個線程,當任務1被鎖定的時候,任務2就可以獨佔CPU,這樣就可以提高兩個任務的執行效率。如果是每個任務就創建新的線程,好像是線程越多,CPU的利用率就越高,好像會處理的越來越快的樣子。但是事情恰恰相反,當線程數到達某個數值之後,隨著新線程的加入,系統對單一任務的響應時間越來越長,越來越慢。本發明將根據系統運行的計算機實際CPU數量,產生相應數量的線程數目;任務將負責將這些線程與相應的CPU建立聯繫,即所有線程將運行在CPU上,保證所有CPU為一個任務都運行來,這樣就充分利用硬體資源提高了算法的執行效率。步驟S22:建立線程池;任務線程的優先級為任務建立線程池,在執行任務時,用戶可以通過線程優先級作為參數拿出一類線程池。在現有的圖像/視頻後期計算機處理過程中,線程的使用都是需要的時候就直接創建線程,任務完成後就將線程銷毀,還沒有發現使用線程池的調度。線程池的概念是計算機處理中的一種技術,是一種多線程處理形式,將線程池引入到圖像/視頻後期計算機處理過程中,因為在圖像/視頻後期計算機處理過程中由於算法的複雜度和任務的多樣性, 需要更多的線程,這樣線程池的應用就很重要了。線程池就是為了實現線程的反覆利用,來了任務使用已經回收到池子中的線程,如果任務使用完線程後,然線程回到池子中,而不是銷毀掉。步驟S23 根據執行任務的優先級選擇線程池;根據需要執行的任務線程的優先級選擇與該優先級相對應的線程池。步驟S22中,根據任務線程的優先級建立了線程池,當用戶有任務需要執行時,就可以根據該任務線程的優先級選擇與該優先級相對應的線程池,比如用戶決定特效算法任務總是需要最高級優先級,那麼用戶就需要從最高級優先級線程的線程池中拿出任務的線程。這樣就實現了多線程的分類管理,提高了任務執行時的效率。步驟S24 選擇線程進行任務的執行;查看線程池中是否存在空閒的線程,若是,則進行任務算法與該線程的關聯,啟動線程調度算法執行任務;若否,則創建新的線程進行任務算法與該線程的關聯,啟動線程調度算法執行任務。在任務執行時,如果線程池中存在空閒的線程則直接將這個線程返回給用戶,否則將根據優先級創建新的線程。之後,進行任務算法與線程的關聯,啟動線程調度算法執行任務時,本發明中通過用戶設置一個回調函數給線程,線程在被CPU調度的時候將回調這個函數,這個函數將具體執行這個算法,用戶通過回調函數就可以知道哪個線程調度過來的進行任務算法與線程的關聯,啟動線程調度算法執行任務是通過設置回調函數來實現的。所述回調函數是用戶根據需要進行設置的,線程在被CPU調度時將通過回調該函數進行任務算法的執行,完成任務。步驟S25:線程的回收。將任務執行結束後的線程回收到線程池中。在CPU完成任務算法的運算後,用戶將結束任務,所有線程將自動回收到線程池中,等待下一次新的任務被調度。由於啟動一個任務線程是需要佔有一定的計算機資源的,所以為了避免資源的浪費,本本發明對線程建立創建和回收的機制,即為不同類型的任務建立線程池,線程池負責為一個任務創建線程,在任務執行結束後,線程池負責將為這個任務創建出來的線程回收, 等待下次使用。如果用戶在另一個時刻需要新的任務的時候,線程池將首先尋找是否有已經回收的線程,如果有就直接使用這些線程,否則將回到創建的步驟,重新為任務創建新線程。如此遞歸調用將能極大的節省線程數量的使用。顯然,本領域的技術人員可以對本發明進行各種改動和變型而不脫離本發明的精神和範圍。這樣,倘若本發明的這些修改和變型屬於本發明權利要求及其同等技術的範圍之內,則本發明也意圖包含這些改動和變型在內。
權利要求
1.一種多任務線程池調度方法,包括以下步驟(1)根據任務算法實現目的的不同,對任務進行分類,並設定任務線程的優先級;(2)根據任務線程的優先級為任務建立線程池;(3)根據需要執行的任務線程的優先級選擇與該優先級相對應的線程池;(4)查看線程池中是否存在空閒的線程,若是,則進行任務算法與該線程的關聯,啟動線程調度算法執行任務;若否,則創建新的線程進行任務算法與該線程的關聯,啟動線程調度算法執行任務;(5)將任務執行結束後的線程回收到線程池中。
2.如權利要求1所述的一種多任務線程池調度方法,其特徵在於所述線程的個數是根據實際CPU的個數進行創建的。
3.如權利要求1所述的一種多任務線程池調度方法,其特徵在於步驟(1)中所述任務線程的優先級是由用戶來設定的。
4.如權利要求1所述的一種多任務線程池調度方法,其特徵在於所述線程池具有線程的創建與回收功能。
5.如權利要求1所述的一種多任務線程池調度方法,其特徵在於步驟(4)中進行任務算法與線程的關聯,啟動線程調度算法執行任務是通過設置回調函數來實現的;所述回調函數是用戶根據需要進行設置的,線程在被CPU調度時將通過回調該函數進行任務算法的執行,完成任務。
6.一種多任務線程池調度系統,包括以下裝置任務分類裝置用於根據任務算法實現目的的不同,對任務進行分類,並進行任務線程的優先級的設定;線程池創建裝置用於根據任務線程的優先級進行線程池的建立;線程池選擇裝置用於根據需執行的任務線程的優先級進行與該優先級相對應的線程池的選擇;任務執行裝置用於進行任務算法與線程的關聯,啟動線程調度算法進行任務的執行;線程回收裝置用於將任務執行結束後的線程回收到線程池。
7.如權利要求6所述的一種多任務線程池調度系統,其特徵在於所述任務執行裝置包括線程選擇模塊,所述線程選擇模塊用於查看線程池中是否存在空閒的線程,若是,則進行任務的執行;若否,則創建新的線程進行任務的執行。
8.如權利要求6所述的一種多任務線程池調度系統,其特徵在於所述任務執行裝置的功能是通過設置回調函數來實現的;所述回調函數是用戶根據需要進行設置的,線程在被CPU調度時將通過回調該函數進行任務算法的執行,完成任務。
全文摘要
本發明涉及一種多任務線程池調度方法和系統。該方法和系統根據計算機實際CPU的個數創建任務線程,並根據任務線程的優先級不同建立線程池,然後根據需執行的任務線程的優先級選擇與該優先級相對應的線程池中的線程,最後將任務算法與線程進行關聯,啟動線程調度算法執行任務。採用本發明所述的方法和系統,用戶可以根據任務線程的優先級來進行線程池的創建,對線程進行分類管理。由於本發明中設置了線程的創建與回收裝置,提高了線程的利用率,避免了資源浪費。
文檔編號G06T1/20GK102541653SQ20101060607
公開日2012年7月4日 申請日期2010年12月24日 優先權日2010年12月24日
發明者劉鐵華, 徐進, 見良, 鄭鵬程 申請人:新奧特(北京)視頻技術有限公司