[發明專利]阻塞任務調度方法及裝置有效
| 申請號: | 201310631829.7 | 申請日: | 2013-11-29 |
| 公開(公告)號: | CN104142858A | 公開(公告)日: | 2014-11-12 |
| 發明(設計)人: | 許家滔;陳國敏;李方源 | 申請(專利權)人: | 騰訊科技(深圳)有限公司 |
| 主分類號: | G06F9/48 | 分類號: | G06F9/48 |
| 代理公司: | 廣州華進聯合專利商標代理有限公司 44224 | 代理人: | 何平;鄧云鵬 |
| 地址: | 518000 廣東省深圳*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 阻塞 任務 調度 方法 裝置 | ||
1.一種阻塞任務調度方法,包括:
為任務函數分配協程,在所述協程中調用所述任務函數;
在調用所述任務函數發生阻塞時將該協程暫停運行,并將該協程設置為暫停狀態;
監聽系統I/O事件,查找與所述系統I/O事件對應的協程,并將該協程設置為運行狀態;
查找出為運行狀態的協程,恢復所述查找到的協程,并對所述系統I/O事件進行相應的處理。
2.根據權利要求1所述的阻塞任務調度方法,其特征在于,所述將該協程設置為運行狀態的步驟之后還包括:
將所述協程添加到預設的非阻塞協程隊列的隊尾;
所述查找出為運行狀態的協程的步驟為:
在所述非阻塞協程隊列的隊首依次取出相應的協程。
3.根據權利要求1所述的阻塞任務調度方法,其特征在于,所述判斷所述任務函數的是否發生阻塞的步驟之前還包括:
通過hook機制調用預設的與所述任務函數對應的同名函數,通過所述同名函數調用所述任務函數并判斷所述任務函數的是否發生阻塞。
4.根據權利要求1所述的阻塞任務調度方法,其特征在于,所述任務函數為socket函數;
所述判斷所述任務函數是否發生阻塞的步驟為:
獲取所述socket函數的fd狀態,根據所述fd狀態判斷所述socket函數是否阻塞。
5.根據權利要求1所述的阻塞任務調度方法,其特征在于,所述將該協程設置為暫停狀態的步驟之后還包括:
為所述協程添加阻塞時間戳;
所述方法還包括:
查找出阻塞時間戳超時且處于暫停狀態的協程,終止所述協程中任務函數的調用。
6.一種阻塞任務調度裝置,其特征在于,包括:
協程分配模塊,用于為任務函數分配協程,在所述協程中調用所述任務函數;
協程暫停運行模塊,用于在所述任務函數的發生阻塞時將其對應的協程暫停運行,并將該協程設置為暫停狀態;
狀態更新模塊,用于監聽系統I/O事件,查找與所述系統I/O事件對應的協程,并將該協程設置為運行狀態;
協程恢復模塊,用于查找出為運行狀態的協程,恢復所述查找到的協程,并對所述系統I/O事件進行相應的處理。
7.根據權利要求6所述的阻塞任務調度裝置,其特征在于,所述狀態更新模塊還用于將所述被設置為運行狀態的協程添加到預設的非阻塞協程隊列的隊尾;
所述協程恢復模塊還用于在所述非阻塞協程隊列的隊首依次取出相應的協程。
8.根據權利要求6所述的阻塞任務調度裝置,其特征在于,所述裝置還包括阻塞檢測模塊,用于通過hook機制調用預設的與所述任務函數對應的同名函數,通過所述同名函數調用所述任務函數并判斷所述任務函數的是否發生阻塞。
9.根據權利要求8所述的阻塞任務調度裝置,其特征在于,所述任務函數為socket函數;
所述阻塞檢測模塊還用于獲取所述socket函數的fd狀態,根據所述fd狀態判斷所述socket函數是否阻塞。
10.根據權利要求6所述的阻塞任務調度裝置,其特征在于,所述協程暫停運行模塊還用于為所述被設置為暫停狀態的協程添加阻塞時間戳;
所述裝置還包括超時檢測模塊,用于查找出阻塞時間戳超時且處于暫停狀態的協程,終止所述協程中任務函數的調用。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于騰訊科技(深圳)有限公司,未經騰訊科技(深圳)有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310631829.7/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:服務器資源的配置處理方法與裝置
- 下一篇:用戶可創建的定制工作流程





