[發明專利]一種基于多平臺的自動互斥量運行方法無效
| 申請號: | 201010156016.3 | 申請日: | 2010-04-20 |
| 公開(公告)號: | CN101840351A | 公開(公告)日: | 2010-09-22 |
| 發明(設計)人: | 蔣宏敏 | 申請(專利權)人: | 深圳市融創天下科技發展有限公司 |
| 主分類號: | G06F9/46 | 分類號: | G06F9/46 |
| 代理公司: | 暫無信息 | 代理人: | 暫無信息 |
| 地址: | 518057 廣東省深圳市南山區科技*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 平臺 自動 互斥量 運行 方法 | ||
技術領域
本發明多線程的軟件開發中多線程資源共享的互斥操作方法,具體涉及一種基于多平臺的自動互斥量運行方法。
背景技術
在多線程的軟件開發中,會使用到大量的線程共享資源,而對這些資源的訪問需要對其進行加鎖操作,也就是互斥操作。這就造成需要在代碼內使用比較多的互斥量,而互斥量的使用過程中,又由于程序的條件判引起的多出口的問題,造成很容易程序出口處遺漏掉釋放互斥量的操作,這種遺漏是比較致命的,若是大型的多線程服務器程序,遺漏之處比較隱秘,會造成程序運行中的死鎖情況,而要排除此問題,將會耗費系統工程師大量的精力去進行排除。
在軟件開發中,特別是多線程服務器軟件的開發中需要大量使用到原子操作,原子操作的實現主要是依靠互斥量,信號量等內核對象的操作。而在不同平臺的軟件環境下的內核對象的操作也不相同。
由于代碼的特性,原子操作的入口點只有一個,而出口點會由條件判斷的原因,會有多個,在實際實現中,經常會有遺漏一個出口點,其所占用的互斥量沒有被正確釋放,造成互斥量的死鎖,引起軟件運行故障。
發明內容
本發明要解決的技術問題是在多線程的軟件開發中,會使用到大量的線程共享資源,而對這些資源的訪問需要對其進行加鎖操作,也就是互斥操作讓系統工程只需關注需要進入互斥量的區間,而不必關心由條件判斷引起的多出口的問題。
為解決以上技術問題,本發明提供一種基于多平臺的自動互斥量運行方法,利用C++對象的創建和銷毀會調用構造函數和析構函數的特性,將進入互斥量的操作放在構造函數里,將退出互斥量的操作放在析構函數里,這樣在創建自動互斥對象的時候會進行進鎖操作,而在銷毀自動互斥對象的時候會進行解鎖操作。
優選地,具體步驟為:首先對系統平臺進行互斥量封裝,這個封裝對象為CcoreMutex,并實現lock和unlock的功能接口,Lock為獲得進入互斥量的接口,unlock為釋放互斥量的接口,再實現一個CAutoCoreMutex的自動互斥量,構造參數中傳入CcoreMutex的指針,檢查指針有效性后進行lock操作,析構函數中對該指針進行unlock操作。
優選地,自動互斥量對象的構造函數中進行進入互斥量操作,在析構中進行退出互斥量操作,再利用臨時變量的生存期,在一段要使用原子操作的代碼開始處申明一個自動互斥對象后,這樣在自動互斥對象的生存期到達后,該對象會被銷毀,從而調用析構里釋放互斥對象的操作。
優選地,首先分別對UINX系統,以及WIN32系統平臺進行互斥量的封裝。
優選地,由宏來區分UINX系統以及WIN32項操作系統平臺。
該發明可以有效地解決釋放互斥量的多出口點問題。減少原子操作的實現步驟,弱化原子操作實現的平臺相關性。具體功能是自動對所要進行的代碼區進行互斥操作,并能夠在代碼區結束后,進行自動釋放。
附圖說明
無附圖。
具體實施方式
本發明方法針對該技術的多平臺特性,所以,首先分別對UINX系統,以及WIN32系統進行互斥量的封裝。假定這個封裝對象為CcoreMutex。并實現lock和unlock的功能接口。Lock為獲得進入互斥量的接口,unlock為釋放互斥量的接口,再實現一個CAutoCoreMutex的自動互斥量,構造參數中傳入CcoreMutex的指針,檢查指針有效性后進行lock操作,析構函數中對該指針進行unlock操作。由Win32和Linux分別進行互斥量的封裝,由宏來區分各項操作系統平臺。
在自動互斥量對象的構造函數中進行進入互斥量操作,在析構中進行退出互斥量操作。再利用臨時變量的生存期,在一段要使用原子操作的代碼開始處申明一個自動互斥對象后,這樣在自動互斥對象的生存期到達后,該對象會被銷毀,從而調用析構里釋放互斥對象的操作。
使用方式如下代碼示例:
//定義一個互斥量對象。
CcoreMutex?mutex;
{
???//構造自動互斥量對象,對自動進行鎖操作
???CautoCoreMutex?autolock(&mutex);
???需要進行原子操作的代碼區
}
???//前面定義的自動互斥量的生存期到達,系統會對autolock進行銷毀,會
調用析構函數,所以unlock會被執行。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于深圳市融創天下科技發展有限公司,未經深圳市融創天下科技發展有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201010156016.3/2.html,轉載請聲明來源鉆瓜專利網。





