欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

用于進程間資源共享的方法與設(shè)備與流程

文檔序號:11154687閱讀:361來源:國知局
用于進程間資源共享的方法與設(shè)備與制造工藝

本申請涉及計算機技術(shù)領(lǐng)域,尤其涉及一種用于進程間資源共享的技術(shù)。



背景技術(shù):

共享內(nèi)存是指允許兩個或者多個進程共享同一塊內(nèi)存,例如,通過將這塊內(nèi)存對應(yīng)的地址映射到各個進程自己獨立的地址空間,從而使得這些進程可以相互通信,而現(xiàn)有技術(shù)中,對于進程間的資源共享,只解決了單次單向正確的通信問題,要么只解決了共享沒有同步,要么解決了同步?jīng)]有共享,因此,資源共享效率較低,也有局限性,不能充分發(fā)揮共享內(nèi)存的作用。



技術(shù)實現(xiàn)要素:

本申請的目的是提供一種用于進程間資源共享的方法與設(shè)備。

根據(jù)本申請的一個方面,提供了一種用于進程間資源共享的方法,其中,該方法包括:

第一進程創(chuàng)建或打開與共享內(nèi)存對應(yīng)的文件映射內(nèi)核對象,以通過所述文件映射內(nèi)核對象訪問所述共享內(nèi)存;

所述第一進程根據(jù)所有共享進程對應(yīng)的同步控制標(biāo)記確定所述共享內(nèi)存的訪問狀態(tài);

當(dāng)所述共享內(nèi)存的訪問狀態(tài)為可訪問時,所述第一進程訪問所述共享內(nèi)存,以向所述共享內(nèi)存寫入數(shù)據(jù)或者從所述共享內(nèi)存讀取其它共享進程寫入的數(shù)據(jù)。

進一步地,其中,第一進程創(chuàng)建或打開與共享內(nèi)存對應(yīng)的文件映射內(nèi)核對象,包括:

當(dāng)不存在其他共享進程創(chuàng)建的所述文件映射內(nèi)核對象,所述第一進程創(chuàng)建所述文件映射內(nèi)核對象,以使其他共享進程打開所述文件映射內(nèi)核對象;

或者當(dāng)存在其他共享進程創(chuàng)建所述文件映射內(nèi)核對象,所述第一進程打開所述文件映射內(nèi)核對象。

進一步地,其中,所述可訪問包括可寫和可讀,其中,所述當(dāng)所述共享內(nèi)存的訪問狀態(tài)為可訪問時,所述第一進程訪問所述共享內(nèi)存,以向所述共享內(nèi)存寫入數(shù)據(jù)或者從所述共享內(nèi)存讀取其它共享進程寫入的數(shù)據(jù)包括:

當(dāng)所述共享內(nèi)存的訪問狀態(tài)為可寫時,所述第一進程向所述共享內(nèi)存寫入數(shù)據(jù)。

進一步地,其中,所述第一進程根據(jù)所有共享進程對應(yīng)的同步控制標(biāo)記確定所述共享內(nèi)存的訪問狀態(tài)包括:

當(dāng)所有共享進程對應(yīng)的同步控制標(biāo)記都為可寫值時,確定所述共享內(nèi)存的訪問狀態(tài)為可寫,

所述第一進程向所述共享內(nèi)存寫入數(shù)據(jù)之后,還包括:

將所述第一進程對應(yīng)的同步控制標(biāo)記設(shè)為可讀值,以使其他共享進程根據(jù)所有共享進程對應(yīng)的同步控制標(biāo)記確定所述共享內(nèi)存的訪問狀態(tài)為可讀。

進一步地,其中,所述可訪問包括可寫和可讀,其中,所述當(dāng)所述共享內(nèi)存的訪問狀態(tài)為可訪問時,所述第一進程訪問所述共享內(nèi)存,以向所述共享內(nèi)存寫入數(shù)據(jù)或者從所述共享內(nèi)存讀取其它共享進程寫入的數(shù)據(jù),包括:

當(dāng)所述共享內(nèi)存的訪問狀態(tài)為可讀時,所述第一進程從所述共享內(nèi)存讀取由第二共享進程寫入的數(shù)據(jù)。

進一步地,其中,所述第一進程根據(jù)所有共享進程對應(yīng)的同步控制標(biāo)記確定所述共享內(nèi)存的訪問狀態(tài)包括:

當(dāng)存在任一其他共享進程對應(yīng)的同步控制標(biāo)記為可讀值,確定所述共享內(nèi)存的訪問狀態(tài)為可讀;

所述第一進程從所述共享內(nèi)存讀取數(shù)據(jù)之后,還包括:

修改所述第二共享進程對應(yīng)的同步控制標(biāo)記,其中,當(dāng)除第二共享進程之外的所有共享進程從所述共享內(nèi)存讀取數(shù)據(jù)之后,所述同步控制標(biāo)記被修改為可寫值。

進一步地,其中,該方法還包括:

所述第一進程獲取提示標(biāo)記的狀態(tài);

所述第一進程根據(jù)所有共享進程對應(yīng)的同步控制標(biāo)記確定所述共享內(nèi)存的訪問狀態(tài)包括:

當(dāng)提示標(biāo)記處于觸發(fā)狀態(tài),所述第一進程根據(jù)所有共享進程對應(yīng)的同步控制標(biāo)記確定所述共享內(nèi)存的訪問狀態(tài)。

進一步地,其中,所述提示標(biāo)記在觸發(fā)所述第一進程根據(jù)所有共享進程對應(yīng)的同步控制標(biāo)記確定所述共享內(nèi)存的訪問狀態(tài)之后,還原為未觸發(fā)狀態(tài);

以及所述第一進程訪問所述共享內(nèi)存之后,還包括:

所述第一進程將所述提示標(biāo)記設(shè)置為觸發(fā)狀態(tài)。

進一步地,其中,所述當(dāng)所述共享內(nèi)存的訪問狀態(tài)為可訪問時,所述第一進程訪問所述共享內(nèi)存,以向所述共享內(nèi)存寫入數(shù)據(jù)或者從所述共享內(nèi)存讀取其它共享進程寫入的數(shù)據(jù)包括:

當(dāng)存在任一其它共享進程對應(yīng)的同步控制標(biāo)記為非零時,所述第一進程從所述共享內(nèi)存讀取由第二共享進程寫入的數(shù)據(jù),并將所述第二共享進程對應(yīng)的同步控制標(biāo)記的值減一,同時將提示標(biāo)記設(shè)置為觸發(fā)狀態(tài);

當(dāng)所有共享進程對應(yīng)的同步控制標(biāo)記為零時,所述第一進程向所述共享內(nèi)存寫入數(shù)據(jù),并所述第一進程對應(yīng)的同步控制標(biāo)記設(shè)為預(yù)設(shè)值,同時將所述提示標(biāo)記設(shè)置為觸發(fā)狀態(tài),其中,所述預(yù)設(shè)值為所有共享進程的數(shù)量減一。

進一步地,其中,所述提示標(biāo)記包括事件內(nèi)核對象或者信號量。

根據(jù)本申請的另一方面,還提供了一種用于進程間資源共享的設(shè)備,其中,該設(shè)備包括:

第一裝置,用于控制第一進程創(chuàng)建或打開與共享內(nèi)存對應(yīng)的文件映射內(nèi)核對象,以通過所述文件映射內(nèi)核對象訪問所述共享內(nèi)存;

第二裝置,用于控制所述第一進程根據(jù)所有共享進程對應(yīng)的同步控制標(biāo)記確定所述共享內(nèi)存的訪問狀態(tài);

第三裝置,用于當(dāng)所述共享內(nèi)存的訪問狀態(tài)為可訪問時,控制所述第一進程訪問所述共享內(nèi)存,以向所述共享內(nèi)存寫入數(shù)據(jù)或者從所述共享內(nèi)存讀取其它共享進程寫入的數(shù)據(jù)。

進一步地,其中,所述第一裝置用于:

當(dāng)不存在其他共享進程創(chuàng)建的所述文件映射內(nèi)核對象,控制所述第一進程創(chuàng)建所述文件映射內(nèi)核對象,以使其他共享進程打開所述文件映射內(nèi)核對象;

或者當(dāng)存在其他共享進程創(chuàng)建所述文件映射內(nèi)核對象,控制所述第一進程打開所述文件映射內(nèi)核對象。

進一步地,其中,所述可訪問包括可寫和可讀,其中,所述第三裝置用于:

當(dāng)所述共享內(nèi)存的訪問狀態(tài)為可寫時,控制所述第一進程向所述共享內(nèi)存寫入數(shù)據(jù)。

進一步地,其中,所述第二裝置用于:

當(dāng)所有共享進程對應(yīng)的同步控制標(biāo)記都為可寫值時,確定所述共享內(nèi)存的訪問狀態(tài)為可寫,

所述第三裝置控制所述第一進程向所述共享內(nèi)存寫入數(shù)據(jù)之后還用于:

將所述第一進程對應(yīng)的同步控制標(biāo)記設(shè)為可讀值,以使其他共享進程根據(jù)所有共享進程對應(yīng)的同步控制標(biāo)記確定所述共享內(nèi)存的訪問狀態(tài)為可讀。

進一步地,其中,所述可訪問包括可寫和可讀,其中,所述第三裝置用于:當(dāng)所述共享內(nèi)存的訪問狀態(tài)為可讀時,所述第一進程從所述共享內(nèi)存讀取由第二共享進程寫入的數(shù)據(jù)。

進一步地,其中,所述第二裝置用于:

當(dāng)存在任一其他共享進程對應(yīng)的同步控制標(biāo)記為可讀值,確定所述共享內(nèi)存的訪問狀態(tài)為可讀;

所述第三裝置控制所述第一進程從所述共享內(nèi)存讀取數(shù)據(jù)之后還用于:

修改所述第二共享進程對應(yīng)的同步控制標(biāo)記,其中,當(dāng)除第二共享進程之外的所有共享進程從所述共享內(nèi)存讀取數(shù)據(jù)之后,所述同步控制標(biāo)記被修改為可寫值。

進一步地,其中,該設(shè)備還包括:

第四裝置,用于控制所述第一進程獲取提示標(biāo)記的狀態(tài);

所述第二裝置用于:

當(dāng)提示標(biāo)記處于觸發(fā)狀態(tài),控制所述第一進程根據(jù)所有共享進程對應(yīng)的同步控制標(biāo)記確定所述共享內(nèi)存的訪問狀態(tài)。

進一步地,其中,所述提示標(biāo)記在觸發(fā)所述第一進程根據(jù)所有共享進程對應(yīng)的同步控制標(biāo)記確定所述共享內(nèi)存的訪問狀態(tài)之后,還原為未觸發(fā)狀態(tài);

以及所述第一進程訪問所述共享內(nèi)存之后,還包括:

第五裝置,用于控制所述第一進程將所述提示標(biāo)記設(shè)置為觸發(fā)狀態(tài)。

進一步地,其中,所述第三裝置用于:

當(dāng)存在任一其它共享進程對應(yīng)的同步控制標(biāo)記為非零時,所述第一進程從所述共享內(nèi)存讀取由第二共享進程寫入的數(shù)據(jù),并將所述第二共享進程對應(yīng)的同步控制標(biāo)記的值減一,同時將提示標(biāo)記設(shè)置為觸發(fā)狀態(tài);

當(dāng)所有共享進程對應(yīng)的同步控制標(biāo)記為零時,所述第一進程向所述共享內(nèi)存寫入數(shù)據(jù),并所述第一進程對應(yīng)的同步控制標(biāo)記設(shè)為預(yù)設(shè)值,同時將所述提示標(biāo)記設(shè)置為觸發(fā)狀態(tài),其中,所述預(yù)設(shè)值為所有共享進程的數(shù)量減一。

進一步地,其中,所述提示標(biāo)記包括事件內(nèi)核對象或者信號量。

與現(xiàn)有技術(shù)相比,本申請通過第一進程創(chuàng)建或打開與共享內(nèi)存對應(yīng)的文件映射內(nèi)核對象,以通過所述文件映射內(nèi)核對象訪問所述共享內(nèi)存,然后所述第一進程根據(jù)所有共享進程對應(yīng)的同步控制標(biāo)記確定所述共享內(nèi)存的訪問狀態(tài),當(dāng)所述共享內(nèi)存的訪問狀態(tài)為可訪問時,所述第一進程訪問所述共享內(nèi)存,以向所述共享內(nèi)存寫入數(shù)據(jù)或者從所述共享內(nèi)存讀取其它共享進程寫入的數(shù)據(jù),通過這種方式實現(xiàn)了多個進程之間的多次雙向正確的通信,提高了資源的共享效率。

附圖說明

通過閱讀參照以下附圖所作的對非限制性實施例所作的詳細描述,本發(fā)明的其它特征、目的和優(yōu)點將會變得更明顯:

圖1示出根據(jù)本申請一個方面的一種用于進程間資源共享的方法流程圖;

圖2示出根據(jù)本申請一個優(yōu)選實施例的一種用于兩進程間資源共享的交互示意圖;

圖3示出根據(jù)本申請另一個方面的一種用于進程間資源共享的設(shè)備示意圖。

附圖中相同或相似的附圖標(biāo)記代表相同或相似的部件。

具體實施方式

下面結(jié)合附圖對本發(fā)明作進一步詳細描述。

在本申請一個典型的配置中,終端、服務(wù)網(wǎng)絡(luò)的設(shè)備和可信方均包括一個或多個處理器(CPU)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。

內(nèi)存可能包括計算機可讀介質(zhì)中的非永久性存儲器,隨機存取存儲器(RAM)和/或非易失性內(nèi)存等形式,如只讀存儲器(ROM)或閃存(flash RAM)。內(nèi)存是計算機可讀介質(zhì)的示例。

計算機可讀介質(zhì)包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術(shù)來實現(xiàn)信息存儲。信息可以是計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計算機的存儲介質(zhì)的例子包括,但不限于相變內(nèi)存(PRAM)、靜態(tài)隨機存取存儲器(SRAM)、動態(tài)隨機存取存儲器(DRAM)、其他類型的隨機存取存儲器(RAM)、只讀存儲器(ROM)、電可擦除可編程只讀存儲器(EEPROM)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲器(CD-ROM)、數(shù)字多功能光盤(DVD)或其他光學(xué)存儲、磁盒式磁帶,磁帶磁盤存儲或其他磁性存儲設(shè)備或任何其他非傳輸介質(zhì),可用于存儲可以被計算設(shè)備訪問的信息。按照本文中的界定,計算機可讀介質(zhì)不包括非暫存電腦可讀媒體(transitory media),如調(diào)制的數(shù)據(jù)信號和載波。

為更進一步闡述本申請所采取的技術(shù)手段及取得的效果,下面結(jié)合附圖及較佳實施例,對本申請的技術(shù)方案,進行清楚和完整的描述。

圖1示出根據(jù)本申請一個方面提供的一種用于進程間資源共享的方法流程圖,其中,該方法包括:

S1第一進程創(chuàng)建或打開與共享內(nèi)存對應(yīng)的文件映射內(nèi)核對象,以通過所述文件映射內(nèi)核對象訪問所述共享內(nèi)存;

S2所述第一進程根據(jù)所有共享進程對應(yīng)的同步控制標(biāo)記確定所述共享內(nèi)存的訪問狀態(tài);

S3當(dāng)所述共享內(nèi)存的訪問狀態(tài)為可訪問時,所述第一進程訪問所述共享內(nèi)存,以向所述共享內(nèi)存寫入數(shù)據(jù)或者從所述共享內(nèi)存讀取其它共享進程寫入的數(shù)據(jù)。

在該實施例中,在所述步驟S1中,第一進程創(chuàng)建或打開與共享內(nèi)存對應(yīng)的文件映射內(nèi)核對象,以通過所述文件映射內(nèi)核對象訪問所述共享內(nèi)存。在此,所述第一進程為所有共享進程中的任一進程,例如,要實現(xiàn)五個進程之間的內(nèi)存共享,所述第一進程為該五個進程中的任一進程。其中,所述文件映射內(nèi)核對象對應(yīng)共享內(nèi)存的地址,所有共享進程可以通過將所述文件映射內(nèi)核對象對應(yīng)的共享內(nèi)存的地址映射到自己的地址空間,得到指向所述共享內(nèi)存的指針,以實現(xiàn)對所述共享內(nèi)存的訪問。

其中,第一進程創(chuàng)建或打開與共享內(nèi)存對應(yīng)的文件映射內(nèi)核對象,包括:當(dāng)不存在其他共享進程創(chuàng)建的所述文件映射內(nèi)核對象,所述第一進程創(chuàng)建所述文件映射內(nèi)核對象,以使其他共享進程打開所述文件映射內(nèi)核對象;或者當(dāng)存在其他共享進程創(chuàng)建所述文件映射內(nèi)核對象,所述第一進程打開所述文件映射內(nèi)核對象。即所有共享進程通過該文件映射內(nèi)核對象實現(xiàn)對所述共享內(nèi)存的訪問。具體地,第一進程或者其他共享進程以約定的名稱創(chuàng)建所述文件映射內(nèi)核對象,并通過該約定的名稱打開所述文件映射內(nèi)核對象。

繼續(xù)在該實施例中,在所述步驟S2中,所述第一進程根據(jù)所有共享進程對應(yīng)的同步控制標(biāo)記確定所述共享內(nèi)存的訪問狀態(tài);進一步地,在所述步驟S3中,當(dāng)所述共享內(nèi)存的訪問狀態(tài)為可訪問時,所述第一進程訪問所述共享內(nèi)存,以向所述共享內(nèi)存寫入數(shù)據(jù)或者從所述共享內(nèi)存讀取其它共享進程寫入的數(shù)據(jù)。在此,所述同步控制標(biāo)記可以為計數(shù)器。

優(yōu)選地,其中,所述可訪問包括可寫和可讀,其中,所述步驟S3包括:當(dāng)所述共享內(nèi)存的訪問狀態(tài)為可寫時,所述第一進程向所述共享內(nèi)存寫入數(shù)據(jù)或者當(dāng)所述共享內(nèi)存的訪問狀態(tài)為可讀時,所述第一進程從所述共享內(nèi)存讀取由第二共享進程寫入的數(shù)據(jù)。在此,所述第二進程指在所有共享進程中除所述第一進程外的其他任一進程。本領(lǐng)域的技術(shù)人員應(yīng)能理解,對于共享內(nèi)存的訪問包括寫數(shù)據(jù)(例如修改數(shù)據(jù))和讀數(shù)據(jù)等,而寫數(shù)據(jù)和讀數(shù)據(jù)不能同時進行,因此,當(dāng)所述共享內(nèi)存處于可寫狀態(tài)時,可以實現(xiàn)寫入數(shù)據(jù),當(dāng)所述共享內(nèi)存處于可讀狀態(tài)時,可以實現(xiàn)讀數(shù)據(jù)。

優(yōu)選地,在本方案中,通過設(shè)置同步控制標(biāo)記的方式,來對應(yīng)所述共享內(nèi)存的可寫或可讀狀態(tài),每個共享進程可以對應(yīng)一個同步控制標(biāo)記。具體地,在一種情況下,在確定當(dāng)所有共享進程對應(yīng)的同步控制標(biāo)記都為可寫值時,確定所述共享內(nèi)存的訪問狀態(tài)為可寫,在此,可寫值是預(yù)先設(shè)定的某個數(shù)值,即當(dāng)所有共享進程對應(yīng)的同步控制標(biāo)記都為該預(yù)先設(shè)定的某個數(shù)值時,所述共享內(nèi)存的訪問狀態(tài)為可寫,通常該數(shù)值被設(shè)置為零。

其中,所述第一進程向所述共享內(nèi)存寫入數(shù)據(jù)之后,還包括:將所述第一進程對應(yīng)的同步控制標(biāo)記設(shè)為可讀值,以使其他共享進程根據(jù)所有共享進程對應(yīng)的同步控制標(biāo)記確定所述共享內(nèi)存的訪問狀態(tài)為可讀。本領(lǐng)域的技術(shù)人員應(yīng)能理解,所述第一進程寫入數(shù)據(jù)以便于其他共享進程讀取數(shù)據(jù),所述可讀值用于提示其他共享進程可讀取數(shù)據(jù)。

在另一種情況下,當(dāng)存在任一其他共享進程對應(yīng)的同步控制標(biāo)記為可讀值,所述第一進程確定所述共享內(nèi)存的訪問狀態(tài)為可讀,因此,所述第一進程從所述共享內(nèi)存讀取數(shù)據(jù),在讀取數(shù)據(jù)之后,所述第一進程修改所述第二共享進程對應(yīng)的同步控制標(biāo)記,其中,當(dāng)除第二共享進程之外的所有共享進程從所述共享內(nèi)存讀取數(shù)據(jù)之后,所述同步控制標(biāo)記被修改為可寫值。

在本方案中,當(dāng)任一共享進程向所述共享內(nèi)存寫入數(shù)據(jù)之后,會將對應(yīng)的同步控制標(biāo)記設(shè)為可讀值,以提示其他共享進程可讀取數(shù)據(jù),而其他進程在讀取數(shù)據(jù)之后會修改該可讀值,以表示該進程讀取了數(shù)據(jù),直到除寫入數(shù)據(jù)的進程之外的所有共享進程都讀取了數(shù)據(jù),所述同步控制標(biāo)記被修改為可寫值。這種方式,能夠?qū)崿F(xiàn)當(dāng)其他所有共享進程都讀完寫入數(shù)據(jù)的進程最近一次寫入的數(shù)據(jù)之后,才能寫入新的數(shù)據(jù)。

優(yōu)選地,所述方法還包括:S4(未示出)所述第一進程獲取提示標(biāo)記的狀態(tài);優(yōu)選地,所述提示標(biāo)記包括事件內(nèi)核對象或者信號量。在此,當(dāng)所述提示標(biāo)記處于觸發(fā)狀態(tài)時,所述第一進程根據(jù)所有共享進程對應(yīng)的同步控制標(biāo)記確定所述共享內(nèi)存的訪問狀態(tài)。其中,所述提示標(biāo)記在觸發(fā)所述第一進程根據(jù)所有共享進程對應(yīng)的同步控制標(biāo)記確定所述共享內(nèi)存的訪問狀態(tài)之后,還原為未觸發(fā)狀態(tài);以及所述第一進程訪問所述共享內(nèi)存之后,還包括:S5(未示出)所述第一進程將所述提示標(biāo)記設(shè)置為觸發(fā)狀態(tài)。

在該情形中,通過提示標(biāo)記的方式,來提示任一共享進程在所述提示標(biāo)記處于觸發(fā)狀態(tài)時,根據(jù)所有共享進程對應(yīng)的同步控制標(biāo)記確定所述共享內(nèi)存的訪問狀態(tài),從而實現(xiàn)對所述共享進程的訪問,而當(dāng)任一共享進程訪問所述共享內(nèi)存之后,該進程會將所述提示標(biāo)記設(shè)置為觸發(fā)狀態(tài),以用于其他共享進程根據(jù)所有共享進程對應(yīng)的同步控制標(biāo)記確定所述共享內(nèi)存的訪問狀態(tài)。通過這種方式,實現(xiàn)了多個共享進程對所述共享內(nèi)存訪問的互斥。

在一個優(yōu)選的實施例中,可寫值可被設(shè)置為零,其中,所述步驟S3包括:當(dāng)存在任一其它共享進程對應(yīng)的同步控制標(biāo)記為非零時,所述第一進程從所述共享內(nèi)存讀取由第二共享進程寫入的數(shù)據(jù),并將所述第二共享進程對應(yīng)的同步控制標(biāo)記的值減一,同時將提示標(biāo)記設(shè)置為觸發(fā)狀態(tài);

當(dāng)所有共享進程對應(yīng)的同步控制標(biāo)記為零時,所述第一進程向所述共享內(nèi)存寫入數(shù)據(jù),并所述第一進程對應(yīng)的同步控制標(biāo)記設(shè)為預(yù)設(shè)值,同時將所述提示標(biāo)記設(shè)置為觸發(fā)狀態(tài),其中,所述預(yù)設(shè)值為所有共享進程的數(shù)量減一。

圖2示出根據(jù)本申請一個優(yōu)選實施例的一種用于兩進程間資源共享的交互示意圖,在該實施例中,包含兩個進程,進程1和進程2,包含兩個同步控制標(biāo)記:同步控制標(biāo)記1和同步控制標(biāo)記2,在該實施例中,事件內(nèi)核對象作為提示標(biāo)記,其中,事件內(nèi)核對象有信號對應(yīng)提示標(biāo)記處于觸發(fā)狀態(tài)。圖中虛線表示進程間橫向流程,實線表示進程內(nèi)縱向流程。

具體地,進程1創(chuàng)建文件映射內(nèi)核對象,進程1將文件映射內(nèi)核對象對應(yīng)的內(nèi)存地址映射到自己的地址空間,映射對象的一個視圖,得到指向共享內(nèi)存的指針,另外,進程1創(chuàng)建事件內(nèi)核對象并使其有信號,進程2以文件映射內(nèi)核對象的名字打開文件映射內(nèi)核對象獲得其句柄,進程2將文件映射內(nèi)核對象對應(yīng)的內(nèi)存地址映射到自己的地址空間,映射對象的一個視圖,得到指向共享內(nèi)存的指針,這樣,進程1和進程2可以實現(xiàn)對所述文件映射內(nèi)核對象對應(yīng)的共享內(nèi)存進行訪問。

以進程1為例,當(dāng)進程1要向所述共享內(nèi)存寫數(shù)據(jù),進程1等待事件內(nèi)核對象有信號,當(dāng)其有信號,進程1判斷進程2對應(yīng)的同步控制標(biāo)記2是否為0,當(dāng)該同步控制標(biāo)記2為0,且進程1對應(yīng)的同步控制標(biāo)記1也為0,進程1可以寫入數(shù)據(jù),并將同步控制標(biāo)記1置為1,以使進程2讀取數(shù)據(jù),并使事件內(nèi)核對象有信號,以提示進程2可訪問所述共享內(nèi)存。

而當(dāng)同步控制標(biāo)記2不為0,即進程2寫入過數(shù)據(jù),則進程1讀取該數(shù)據(jù),并將同步控制標(biāo)記2的值減1,并使事件內(nèi)核對象有信號,以提示進程2可訪問所述共享內(nèi)存。

當(dāng)同步控制標(biāo)記2為0,而同步控制標(biāo)記1不為0,即進程1寫入過數(shù)據(jù),但進程2未讀取該數(shù)據(jù),則進程1使事件內(nèi)核對象有信號,以提示進程2可訪問所述共享內(nèi)存,從而保證只有在數(shù)據(jù)讀取之后,才能有新的數(shù)據(jù)寫入。

與現(xiàn)有技術(shù)相比,本申請通過第一進程創(chuàng)建或打開與共享內(nèi)存對應(yīng)的文件映射內(nèi)核對象,以通過所述文件映射內(nèi)核對象訪問所述共享內(nèi)存,然后所述第一進程根據(jù)所有共享進程對應(yīng)的同步控制標(biāo)記確定所述共享內(nèi)存的訪問狀態(tài),當(dāng)所述共享內(nèi)存的訪問狀態(tài)為可訪問時,所述第一進程訪問所述共享內(nèi)存,以向所述共享內(nèi)存寫入數(shù)據(jù)或者從所述共享內(nèi)存讀取其它共享進程寫入的數(shù)據(jù),通過這種方式實現(xiàn)了多個進程之間的多次雙向正確的通信,提高了資源的共享效率。

圖3示出根據(jù)本申請一個方面提供的一種用于進程間資源共享的設(shè)備示意圖,其中,該設(shè)備包括:

第一裝置,用于控制第一進程創(chuàng)建或打開與共享內(nèi)存對應(yīng)的文件映射內(nèi)核對象,以通過所述文件映射內(nèi)核對象訪問所述共享內(nèi)存;

第二裝置,用于控制所述第一進程根據(jù)所有共享進程對應(yīng)的同步控制標(biāo)記確定所述共享內(nèi)存的訪問狀態(tài);

第三裝置,用于當(dāng)所述共享內(nèi)存的訪問狀態(tài)為可訪問時,控制所述第一進程訪問所述共享內(nèi)存,以向所述共享內(nèi)存寫入數(shù)據(jù)或者從所述共享內(nèi)存讀取其它共享進程寫入的數(shù)據(jù)。

在該實施例中,所述第一裝置控制第一進程創(chuàng)建或打開與共享內(nèi)存對應(yīng)的文件映射內(nèi)核對象,以通過所述文件映射內(nèi)核對象訪問所述共享內(nèi)存。在此,所述第一進程為所有共享進程中的任一進程,例如,要實現(xiàn)五個進程之間的內(nèi)存共享,所述第一進程為該五個進程中的任一進程。其中,所述文件映射內(nèi)核對象對應(yīng)共享內(nèi)存的地址,所有共享進程可以通過將所述文件映射內(nèi)核對象對應(yīng)的共享內(nèi)存的地址映射到自己的地址空間,得到指向所述共享內(nèi)存的指針,以實現(xiàn)對所述共享內(nèi)存的訪問。

其中,第一進程創(chuàng)建或打開與共享內(nèi)存對應(yīng)的文件映射內(nèi)核對象,包括:當(dāng)不存在其他共享進程創(chuàng)建的所述文件映射內(nèi)核對象,所述第一進程創(chuàng)建所述文件映射內(nèi)核對象,以使其他共享進程打開所述文件映射內(nèi)核對象;或者當(dāng)存在其他共享進程創(chuàng)建所述文件映射內(nèi)核對象,所述第一進程打開所述文件映射內(nèi)核對象。即所有共享進程通過該文件映射內(nèi)核對象實現(xiàn)對所述共享內(nèi)存的訪問。具體地,第一進程或者其他共享進程以約定的名稱創(chuàng)建所述文件映射內(nèi)核對象,并通過該約定的名稱打開所述文件映射內(nèi)核對象。

繼續(xù)在該實施例中,所述第二裝置控制所述第一進程根據(jù)所有共享進程對應(yīng)的同步控制標(biāo)記確定所述共享內(nèi)存的訪問狀態(tài);進一步地,當(dāng)所述共享內(nèi)存的訪問狀態(tài)為可訪問時,所述第三裝置控制所述第一進程訪問所述共享內(nèi)存,以向所述共享內(nèi)存寫入數(shù)據(jù)或者從所述共享內(nèi)存讀取其它共享進程寫入的數(shù)據(jù)。

優(yōu)選地,其中,所述可訪問包括可寫和可讀,其中,所述第三裝置用于:當(dāng)所述共享內(nèi)存的訪問狀態(tài)為可寫時,所述第一進程向所述共享內(nèi)存寫入數(shù)據(jù)或者當(dāng)所述共享內(nèi)存的訪問狀態(tài)為可讀時,所述第一進程從所述共享內(nèi)存讀取由第二共享進程寫入的數(shù)據(jù)。在此,所述第二進程指在所有共享進程中除所述第一進程外的其他任一進程。本領(lǐng)域的技術(shù)人員應(yīng)能理解,對于共享內(nèi)存的訪問包括寫數(shù)據(jù)(例如修改數(shù)據(jù))和讀數(shù)據(jù)等,而寫數(shù)據(jù)和讀數(shù)據(jù)不能同時進行,因此,當(dāng)所述共享內(nèi)存處于可寫狀態(tài)時,可以實現(xiàn)寫入數(shù)據(jù),當(dāng)所述共享內(nèi)存處于可讀狀態(tài)時,可以實現(xiàn)讀數(shù)據(jù)。

優(yōu)選地,在本方案中,通過設(shè)置同步控制標(biāo)記的方式,來對應(yīng)所述共享內(nèi)存的可寫或可讀狀態(tài),每個共享進程可以對應(yīng)一個同步控制標(biāo)記。具體地,在一種情況下,在確定當(dāng)所有共享進程對應(yīng)的同步控制標(biāo)記都為可寫值時,確定所述共享內(nèi)存的訪問狀態(tài)為可寫,在此,可寫值是預(yù)先設(shè)定的某個數(shù)值,即當(dāng)所有共享進程對應(yīng)的同步控制標(biāo)記都為該預(yù)先設(shè)定的某個數(shù)值時,所述共享內(nèi)存的訪問狀態(tài)為可寫,通常該數(shù)值被設(shè)置為零。

其中,所述第三裝置控制所述第一進程向所述共享內(nèi)存寫入數(shù)據(jù)之后,還用于將所述第一進程對應(yīng)的同步控制標(biāo)記設(shè)為可讀值,以使其他共享進程根據(jù)所有共享進程對應(yīng)的同步控制標(biāo)記確定所述共享內(nèi)存的訪問狀態(tài)為可讀。本領(lǐng)域的技術(shù)人員應(yīng)能理解,所述第一進程寫入數(shù)據(jù)以便于其他共享進程讀取數(shù)據(jù),所述可讀值用于提示其他共享進程可讀取數(shù)據(jù)。

在另一種情況下,當(dāng)存在任一其他共享進程對應(yīng)的同步控制標(biāo)記為可讀值,所述第一進程確定所述共享內(nèi)存的訪問狀態(tài)為可讀,因此,所述第一進程從所述共享內(nèi)存讀取數(shù)據(jù),在讀取數(shù)據(jù)之后,所述第三裝置控制所述第一進程修改所述第二共享進程對應(yīng)的同步控制標(biāo)記,其中,當(dāng)除第二共享進程之外的所有共享進程從所述共享內(nèi)存讀取數(shù)據(jù)之后,所述同步控制標(biāo)記被修改為可寫值。

在本方案中,當(dāng)任一共享進程向所述共享內(nèi)存寫入數(shù)據(jù)之后,會將對應(yīng)的同步控制標(biāo)記設(shè)為可讀值,以提示其他共享進程可讀取數(shù)據(jù),而其他進程在讀取數(shù)據(jù)之后會修改該可讀值,以表示該進程讀取了數(shù)據(jù),直到除寫入數(shù)據(jù)的進程之外的所有共享進程都讀取了數(shù)據(jù),所述同步控制標(biāo)記被修改為可寫值。這種方式,能夠?qū)崿F(xiàn)當(dāng)其他所有共享進程都讀完寫入數(shù)據(jù)的進程最近一次寫入的數(shù)據(jù)之后,才能寫入新的數(shù)據(jù)。

優(yōu)選地,所述設(shè)備還包括:第四裝置(未示出),用于控制所述第一進程獲取提示標(biāo)記的狀態(tài);優(yōu)選地,所述提示標(biāo)記包括事件內(nèi)核對象或者信號量。在此,當(dāng)所述提示標(biāo)記處于觸發(fā)狀態(tài)時,所述第一進程根據(jù)所有共享進程對應(yīng)的同步控制標(biāo)記確定所述共享內(nèi)存的訪問狀態(tài)。其中,所述提示標(biāo)記在觸發(fā)所述第一進程根據(jù)所有共享進程對應(yīng)的同步控制標(biāo)記確定所述共享內(nèi)存的訪問狀態(tài)之后,還原為未觸發(fā)狀態(tài);以及所述第一進程訪問所述共享內(nèi)存之后,所述設(shè)備還包括:第五裝置(未示出),用于控制所述第一進程將所述提示標(biāo)記設(shè)置為觸發(fā)狀態(tài)。

在該情形中,通過提示標(biāo)記的方式,來提示任一共享進程在所述提示標(biāo)記處于觸發(fā)狀態(tài)時,根據(jù)所有共享進程對應(yīng)的同步控制標(biāo)記確定所述共享內(nèi)存的訪問狀態(tài),從而實現(xiàn)對所述共享進程的訪問,而當(dāng)任一共享進程訪問所述共享內(nèi)存之后,該進程會將所述提示標(biāo)記設(shè)置為觸發(fā)狀態(tài),以用于其他共享進程根據(jù)所有共享進程對應(yīng)的同步控制標(biāo)記確定所述共享內(nèi)存的訪問狀態(tài)。通過這種方式,實現(xiàn)了多個共享進程對所述共享內(nèi)存訪問的互斥。

在一個優(yōu)選的實施例中,可寫值可被設(shè)置為零,其中,所述第三裝置用于:當(dāng)存在任一其它共享進程對應(yīng)的同步控制標(biāo)記為非零時,所述第一進程從所述共享內(nèi)存讀取由第二共享進程寫入的數(shù)據(jù),并將所述第二共享進程對應(yīng)的同步控制標(biāo)記的值減一,同時將提示標(biāo)記設(shè)置為觸發(fā)狀態(tài);

當(dāng)所有共享進程對應(yīng)的同步控制標(biāo)記為零時,所述第一進程向所述共享內(nèi)存寫入數(shù)據(jù),并所述第一進程對應(yīng)的同步控制標(biāo)記設(shè)為預(yù)設(shè)值,同時將所述提示標(biāo)記設(shè)置為觸發(fā)狀態(tài),其中,所述預(yù)設(shè)值為所有共享進程的數(shù)量減一。

與現(xiàn)有技術(shù)相比,本申請通過第一進程創(chuàng)建或打開與共享內(nèi)存對應(yīng)的文件映射內(nèi)核對象,以通過所述文件映射內(nèi)核對象訪問所述共享內(nèi)存,然后所述第一進程根據(jù)所有共享進程對應(yīng)的同步控制標(biāo)記確定所述共享內(nèi)存的訪問狀態(tài),當(dāng)所述共享內(nèi)存的訪問狀態(tài)為可訪問時,所述第一進程訪問所述共享內(nèi)存,以向所述共享內(nèi)存寫入數(shù)據(jù)或者從所述共享內(nèi)存讀取其它共享進程寫入的數(shù)據(jù),通過這種方式實現(xiàn)了多個進程之間的多次雙向正確的通信,提高了資源的共享效率。

對于本領(lǐng)域技術(shù)人員而言,顯然本發(fā)明不限于上述示范性實施例的細節(jié),而且在不背離本發(fā)明的精神或基本特征的情況下,能夠以其他的具體形式實現(xiàn)本發(fā)明。因此,無論從哪一點來看,均應(yīng)將實施例看作是示范性的,而且是非限制性的,本發(fā)明的范圍由所附權(quán)利要求而不是上述說明限定,因此旨在將落在權(quán)利要求的等同要件的含義和范圍內(nèi)的所有變化涵括在本發(fā)明內(nèi)。不應(yīng)將權(quán)利要求中的任何附圖標(biāo)記視為限制所涉及的權(quán)利要求。此外,顯然“包括”一詞不排除其他單元或步驟,單數(shù)不排除復(fù)數(shù)。裝置權(quán)利要求中陳述的多個單元或裝置也可以由一個單元或裝置通過軟件或者硬件來實現(xiàn)。第一,第二等詞語用來表示名稱,而并不表示任何特定的順序。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
商水县| 景德镇市| 晋宁县| 故城县| 郯城县| 罗定市| 高唐县| 吉木乃县| 临颍县| 梁山县| 雷波县| 沙洋县| 万州区| 自贡市| 建宁县| 宝山区| 公主岭市| 汤阴县| 延边| 衡山县| 玛纳斯县| 同江市| 中江县| 城步| 白朗县| 永春县| 肥城市| 丰城市| 句容市| 高陵县| 南投市| 关岭| 九寨沟县| 腾冲县| 陕西省| 蛟河市| 利川市| 封开县| 巫溪县| 大竹县| 阳新县|