[發明專利]適用于Linux容器應用的多進程同步方法在審
| 申請號: | 202110598729.3 | 申請日: | 2021-05-31 |
| 公開(公告)號: | CN113535414A | 公開(公告)日: | 2021-10-22 |
| 發明(設計)人: | 鄔科科;王燕;劉寧;馮丹榮 | 申請(專利權)人: | 寧波三星醫療電氣股份有限公司 |
| 主分類號: | G06F9/52 | 分類號: | G06F9/52 |
| 代理公司: | 寧波誠源專利事務所有限公司 33102 | 代理人: | 袁忠衛;李娜 |
| 地址: | 315191 浙江省寧*** | 國省代碼: | 浙江;33 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 適用于 linux 容器 應用 進程 同步 方法 | ||
本發明涉及一種適用于Linux容器應用的多進程同步方法,所述方法包括S1、初始化線程鎖和進程鎖;S2、獲取線程鎖,再獲取進程鎖,實現多線程多進程同步互斥以保護臨界區資源;S3、完成任務后,釋放進程鎖,再釋放線程鎖,結束任務。本發明實現了多線程和多進程的同步。
技術領域
本發明涉及通信技術領域,尤其涉及適用于Linux容器應用的多進程同步方法。
背景技術
目前終端產品已經迭代到能源控制器,它采用模組化設計,通過不同種類的功能模組配合,實現對終端形態的重新定義。同時在軟件形態上,統一使用linux系統,并加入了容器(Docker)技術,達到各應用程序之間互相隔離的目的。這使得linux多進程的同步,不單單要解決傳統的單主機多進程資源共享、競爭問題,同時也要解決容器內進程和主機進程間的資源共享、競爭問題
傳統的進程間通信方式(IPC)種類有很多,但在解決容器內、外多進程間臨界區資源保護上,存在欠缺。比如system V信號量要適用在無親緣關系的進程間,必須要滿足生成鍵值一致。這就要求容器在安裝時必須映射主機的某個特定目錄。同時,為了達到IPC命名空間一致,容器安裝時必須附帶“IPC=host”參數來共享主機的IPC命名空間,而這一點破壞了容器作為虛擬化技術,和宿主主機系統間隔離的初衷。
再比如posix信號量要適用在無親緣關系的進程間,首先需要使用有名信號量,這就必須要求容器共享主機的“/dev/shm”目錄,以達到創建信號量時自動生成的文件對象是同一個。并且posix信號量本身在持有鎖期間進程終止的場景下不會自動釋放,直接導致信號量死鎖。目前容器內往往存在守護進程,容器內應用程序意外終止時,不會重啟整機而是由守護進程重啟應用程序,而這操作容易導致死鎖情況發生,這是災難性的問題。
綜上,就目前的技術方案來說,無論是需要特別的部署方式(映射主機共享目錄、特定的運行參數)還是本身存在的死鎖問題,都存在缺陷,不適用于多廠家共同開發和互換容器應用的場景。
發明內容
鑒于上述問題,本發明的目的在于提供一種適用于Linux容器應用的多進程同步方法,以解決上述問題。
為了實現上述目的,本發明采用的技術方案為:一種適用于Linux容器應用的多進程同步方法,其特征在于:
S1、初始化線程鎖和進程鎖;
S2、獲取線程鎖,再獲取進程鎖,實現多線程多進程同步互斥以保護臨界區資源;
S3、完成任務后,釋放進程鎖,再釋放線程鎖,結束任務。
進一步的,所述S2的具體操作過程如下:
S21、定義線程互斥鎖、條件變量以及無符號32位整型信號值;
S22、獲取線程互斥鎖,實現多線程對信號值進行保護;
S23、判斷信號值是否大于0,若是,執行S25,反之,執行S24;
S24、等待條件變量,線程進入阻塞狀態,并在收到條件變量的通知時,執行S25;
S25、對信號值減1;
S26、釋放線程互斥鎖;
S27、執行進程鎖加鎖操作。
進一步的,所述S3釋放進程鎖和線程鎖的具體操作過程如下:
S31、執行進程所解鎖過程;
S32、獲取線程互斥鎖,實現多線程對信號值進行保護;
S33、對信號值加1;
S34、廣播通知條件變量;
S35、釋放線程互斥鎖。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于寧波三星醫療電氣股份有限公司,未經寧波三星醫療電氣股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202110598729.3/2.html,轉載請聲明來源鉆瓜專利網。





