[發明專利]一種多線程運行性能的處理方法、裝置、介質和電子設備有效
| 申請號: | 202010085327.9 | 申請日: | 2020-02-10 |
| 公開(公告)號: | CN111338831B | 公開(公告)日: | 2023-06-09 |
| 發明(設計)人: | 樸英敏 | 申請(專利權)人: | 北京字節跳動網絡技術有限公司 |
| 主分類號: | G06F11/07 | 分類號: | G06F11/07;G06F9/48 |
| 代理公司: | 北京國昊天誠知識產權代理有限公司 11315 | 代理人: | 馬瑞 |
| 地址: | 100041 北京市石景山區*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 多線程 運行 性能 處理 方法 裝置 介質 電子設備 | ||
1.一種多線程運行性能的處理方法,其特征在于,包括:
響應于啟動主線程的啟動指令,啟動所述主線程;
在檢測到啟動所述主線程之后,調用修復代碼對異常線程進行修復,得到對應的修復后的線程;
獲取并載入線程棧對應的棧保護頁;
創建所述主線程的至少一個子線程,得到對應的子線程;
其中,所述調用修復代碼對異常線程進行修復,得到對應的修復后的線程包括:
遍歷虛擬機的動態庫,搜索到用于調用第一函數的指令的第一地址,所述第一函數為用于進行遍歷棧操作的函數;
遍歷所述動態庫,搜索到所述第一函數方法對應的第二地址;
遍歷所述動態庫,搜索到第二函數方法對應的第三地址,所述第二函數為用于創建所述棧保護頁的函數;
將所述第二地址對應的第一跳轉指令替換為所述第三地址對應的第二跳轉指令。
2.根據權利要求1所述的方法,其特征在于,在所述將所述第二地址對應的第一跳轉指令替換為所述第三地址對應的第二跳轉指令之前,所述方法還包括:
讀取所述第一跳轉指令;以及
讀取所述第二跳轉指令;
其中,所述第一跳轉指令為所述第二地址對應的跳轉指令,
所述第二跳轉指令為所述第三地址對應的跳轉指令。
3.根據權利要求1所述的方法,其特征在于,在所述獲取并載入線程棧對應的棧保護頁之前,所述方法還包括:
編輯所述線程棧對應的所述棧保護頁。
4.根據權利要求3所述的方法,其特征在于,在所述編輯所述線程棧對應的所述棧保護頁之前,所述方法還包括:
創建所述棧保護頁對應的所述線程棧。
5.根據權利要求4所述的方法,其特征在于,在所述創建所述棧保護頁對應的所述線程棧之前,所述方法還包括:
對對應的修復后的線程進行線程初始化處理。
6.根據權利要求5所述的方法,其特征在于,在所述對對應的修復后的線程進行線程初始化處理之前,所述方法還包括:
檢測對應的修復后的線程是否為正常運行的線程,得到對應的檢測結果;并根據所述檢測結果進行相應的處理;若所述檢測結果為:對應的修復后的線程均為正常運行的線程,則啟動對對應的修復后的線程進行線程初始化處理。
7.一種多線程運行性能的處理裝置,其特征在于,包括:
啟動單元,用于響應于啟動主線程的啟動指令,啟動所述主線程;
修復單元,用于在檢測到所述啟動單元啟動所述主線程之后,調用修復代碼對異常線程進行修復,得到修復后的線程;
獲取載入單元,用于獲取并載入線程棧對應的棧保護頁;
創建單元,用于創建所述主線程的至少一個子線程,得到對應的子線程;
其中,所述調用修復代碼對異常線程進行修復,得到對應的修復后的線程包括:
遍歷虛擬機的動態庫,搜索到用于調用第一函數的指令的第一地址,所述第一函數為用于進行遍歷棧操作的函數;
遍歷所述動態庫,搜索到所述第一函數方法對應的第二地址;
遍歷所述動態庫,搜索到第二函數方法對應的第三地址,所述第二函數為用于創建所述棧保護頁的函數;
將所述第二地址對應的第一跳轉指令替換為所述第三地址對應的第二跳轉指令。
8.一種計算機可讀存儲介質,其上存儲有計算機程序,其特征在于,所述程序被處理器執行時實現如權利要求1至6中任一項所述的方法。
9.一種電子設備,其特征在于,包括:
一個或多個處理器;
存儲裝置,用于存儲一個或多個程序,當所述一個或多個程序被所述一個或多個處理器執行時,使得所述一個或多個處理器實現如權利要求1至6中任一項所述的方法。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京字節跳動網絡技術有限公司,未經北京字節跳動網絡技術有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010085327.9/1.html,轉載請聲明來源鉆瓜專利網。





