[發明專利]阻塞任務調度方法及裝置有效
| 申請號: | 201310631829.7 | 申請日: | 2013-11-29 |
| 公開(公告)號: | CN104142858A | 公開(公告)日: | 2014-11-12 |
| 發明(設計)人: | 許家滔;陳國敏;李方源 | 申請(專利權)人: | 騰訊科技(深圳)有限公司 |
| 主分類號: | G06F9/48 | 分類號: | G06F9/48 |
| 代理公司: | 廣州華進聯合專利商標代理有限公司 44224 | 代理人: | 何平;鄧云鵬 |
| 地址: | 518000 廣東省深圳*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 阻塞 任務 調度 方法 裝置 | ||
技術領域
本發明涉及計算機技術領域,特別是涉及一種阻塞任務調度方法及裝置。
背景技術
現有的計算機技術中的應用程序框架在執行需要I/O(input/output)的任務時,通常會由于等待輸入數據而進入暫停狀態。例如,調用socket函數監聽端口等待接收遠程服務器發送來的數據時,或是監聽系統輸入事件對應的input流時,均會進入暫停狀態,從而使得程序進程無法繼續執行。
現有的應用程序框架為了防止程序由于等待I/O而進入暫停狀態,通常為以線程為單位執行阻塞任務,即,以多線程的方式執行程序,當某個線程由于執行I/O任務而阻塞時,可在操作系統的調度下切換到其他線程異步執行。
然而,由于操作系統創建和管理線程的開銷較大,應用程序框架在業務較繁忙,創建的線程較多時,操作系統的上下文切換的次數會呈幾何指數上升,而由于系統性能的限制,使得系統I/O的并發數量下降。
發明內容
基于此,有必要提供一種能夠提高系統I/O的并發數量的阻塞任務調度方法。
一種阻塞任務調度方法,包括:
為任務函數分配協程,在所述協程中調用所述任務函數;
在調用所述任務函數發生阻塞時將該協程暫停運行,并將該協程設置為暫停狀態;
監聽系統I/O事件,查找與所述系統I/O事件對應的協程,并將該協程設置為運行狀態;
查找出為運行狀態的協程,恢復所述查找到的協程,并對所述系統I/O事件進行相應的處理。
此外,還提供了一種能夠提高系統I/O的并發數量的阻塞任務調度裝置。
一種阻塞任務調度裝置,包括:
協程分配模塊,用于為任務函數分配協程,在所述協程中調用所述任務函數;
協程暫停運行模塊,用于在調用所述任務函數發生阻塞時將該協程暫停運行,并將該協程設置為暫停狀態;
狀態更新模塊,用于監聽系統I/O事件,查找與所述系統I/O事件對應的協程,并將該協程設置為運行狀態;
協程恢復模塊,查找出為運行狀態的協程,恢復所述查找到的協程,并對所述系統I/O事件進行相應的處理。
上述阻塞任務調度方法及裝置中,以協程作為任務函數的載體運行,在任務函數發生阻塞時,將其對應的協程暫停運行從而切換到其他為暫停運行的協程上繼續異步執行;在暫停運行的協程有相應的系統I/O事件觸發時,則結束該協程的暫停狀態將其恢復,并將該系統I/O事件分配給該協程處理。與傳統技術中以線程或進程為載體運行任務函數的方式相比,創建和調度協程比創建和調度線程或進程需要較少的內存資源,因此,在相同的系統資源限制下,可創建較多的協程來處理并發的系統I/O任務,從而提高了系統I/O的并發數量。
同時,對于開發者而言,上述阻塞任務調度方法及裝置的改動僅局限在現有的應用框架中對應用層接口函數的底層實現方式上,即將調用應用層接口函數執行任務函數的載體設置為協程,使得基于應用層框架的業務邏輯代碼并不需要修改,開發者只需在現有的應用層框架的底層修改代碼即可實現上述阻塞任務調度方法及裝置,從而降低了在現有系統上開發和維護的復雜度。
附圖說明
圖1為一個實施例中阻塞任務調度方法的流程圖;
圖2為一個實施例中阻塞任務調度裝置的結構示意圖;
圖3為另一個實施例中阻塞任務調度裝置的結構示意圖;
圖4為一個實施例中阻塞任務調度裝置的硬件環境圖。
具體實施方式
為了使本發明的目的、技術方案及優點更加清楚明白,以下結合附圖及實施例,對本發明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發明,并不用于限定本發明。
除非上下文另有特定清楚的描述,本發明中的元件和組件,數量既可以單個的形式存在,也可以多個的形式存在,本發明并不對此進行限定。本發明中的步驟雖然用標號進行了排列,但并不用于限定步驟的先后次序,除非明確說明了步驟的次序或者某步驟的執行需要其他步驟作為基礎,否則步驟的相對次序是可以調整的。可以理解,本文中所使用的術語“和/或”涉及且涵蓋相關聯的所列項目中的一者或一者以上的任何和所有可能的組合。
在一個實施例中,如圖1所示,一種阻塞任務調度裝置方法,該方法完全依賴于計算機程序,該計算機程序可運行于基于馮洛伊曼體系的計算機系統上,該方法包括:
該方法包括:
步驟S102,為任務函數分配協程,在協程中調用任務函數。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于騰訊科技(深圳)有限公司,未經騰訊科技(深圳)有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310631829.7/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:服務器資源的配置處理方法與裝置
- 下一篇:用戶可創建的定制工作流程





