[發明專利]一種多線程啟動同步方法有效
| 申請號: | 201710568634.0 | 申請日: | 2017-07-13 |
| 公開(公告)號: | CN109254834B | 公開(公告)日: | 2021-05-14 |
| 發明(設計)人: | 楊紹軍 | 申請(專利權)人: | 普天信息技術有限公司 |
| 主分類號: | G06F9/48 | 分類號: | G06F9/48;G06F9/52;G06F9/54 |
| 代理公司: | 北京德琦知識產權代理有限公司 11018 | 代理人: | 謝安昆;宋志強 |
| 地址: | 100080 *** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 多線程 啟動 同步 方法 | ||
本申請提供了一種多線程啟動同步方法,通過采取三種狀態和事件機制來控制多線程啟動,使線程無序的啟動過程變成有序的啟動過程,從而避免系統的運轉出現異常,也可以避免超時循環等待降低系統性能的情況,能夠在不需要定義全局參數變量,也不需要考慮延遲,以及避免死鎖的情況下實現多線程啟動同步。
技術領域
本發明涉及通信技術領域,特別涉及一種多線程啟動同步方法。
背景技術
線程啟動時經常需要主線程向子線程傳遞參數,但是因線程之間的運行時間片隨機,經常出現一個線程任務執行一半就切換到了另外一個線程,這樣就導致主線程向子線程傳遞的參數在子線程還沒有獲取到相關參數信息時,主線程就將參數信息釋放了,或者導致主線程還有準備好后續的資源,子線程已經執行到使用主線程的該資源了,從而使得主線程或者子線程出現異常崩潰。
在線程退出時也存在類似問題,當主線程退出時希望子線程也同步退出,但不能通過暴力方式關閉子線程,因為這樣會導致資源沒有釋放從而出現資源泄漏,同時子線程退出時也存在線程啟動時的類似問題,出現主線程或者子線程異常崩潰現象。
現有技術實現在線程啟動進行參數傳遞時一般采取全局共享參數變量和啟動后sleep延時方式,或者簡單事件等待機制;退出時一般使用延時方式。
現有技術采取全局變量模式需要定義全局參數變量,該方式一方面浪費系統存儲空間,也增加了維護復雜度,增大了軟件耦合性;另外使得模塊可重入性、可維護性、可重用性變得較差。
現有技術的延時機制的延時時長而無法精確量化,從而使得模塊經常出現參數傳遞同步失敗問題。
簡單事件同步等待機制也容易造成死鎖。
發明內容
有鑒于此,本申請提供一種多線程啟動同步方法,能夠在不需要定義全局參數變量,也不需要考慮延遲時長問題,同時可避免死鎖的情況下實現多線程的啟動同步。
為解決上述技術問題,本申請的技術方案是這樣實現的:
一種多線程啟動同步方法,其特征在于,該方法包括:
配置啟動共享狀態變量參數,以及啟動觸發事件;
通過主線程模塊啟動主線程,并將配置的初始狀態值賦值給啟動共享狀態變量;
通過主線程模塊啟動子線程模塊,并將參數信息傳輸給子線程模塊;
通過子線程模塊啟動子任務線程,接收主線程模塊傳輸的參數信息并存儲;
使用主線程模塊判斷當前啟動共享狀態變量的值是否為初始狀態值,如果是,將啟動共享狀態變量的值修改為配置的第一狀態值;等待啟動觸發事件,在接收到啟動觸發事件時,運行主線程;否則,修改啟動共享狀態變量的值為初始狀態值,并發送啟動觸發事件,繼續運行主線程;
使用子線程模塊判斷當前啟動共享狀態變量的值是否為初始狀態值,如果是,將啟動共享狀態變量的值修改為配置的第二狀態值,等待啟動觸發事件,在接收到啟動觸發事件時,運行子線程;否則,修改啟動共享變量參數的值為初始狀態值,并發送啟動觸發事件,繼續運行子線程。
由上面的技術方案可知,本申請中采取三種狀態和事件機制來控制多線程啟動,使線程無序的啟動過程變成有序的啟動過程,從而避免系統的運轉出現異常,也可以避免超時循環等待降低系統性能的情況,本申請提供的技術方案不需要定義全局參數變量,也不需要考慮延遲時長問題,還可以避免死鎖,雙方一旦條件具備即可繼續執行后續動作。
附圖說明
圖1為本申請實施例中多線程啟動同步流程示意圖;
圖2為本申請實施例中子線程退出同步流程示意圖。
具體實施方式
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于普天信息技術有限公司,未經普天信息技術有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710568634.0/2.html,轉載請聲明來源鉆瓜專利網。





