42。
[0123]第一啟動(dòng)單元11用于啟動(dòng)第一進(jìn)程。
[0124]第一讀取單元21用于通過第一進(jìn)程讀取共享數(shù)據(jù)。
[0125]保存單元31用于在第一進(jìn)程在讀取共享數(shù)據(jù)之后,將共享數(shù)據(jù)保存為鏡像數(shù)據(jù)。
[0126]第二啟動(dòng)單元41用于啟動(dòng)第二進(jìn)程。
[0127]第二讀取單元51用于第二進(jìn)程通過讀取鏡像數(shù)據(jù)讀取共享數(shù)據(jù)。
[0128]在第一啟動(dòng)單元11啟動(dòng)第一進(jìn)程之后,第一讀取單元21通過第一進(jìn)程讀取共享數(shù)據(jù),在第一讀取單元21讀取共享數(shù)據(jù)之后,保存單元31將共享數(shù)據(jù)保存為鏡像數(shù)據(jù)。如果第二進(jìn)程需要讀取共享數(shù)據(jù),則第二啟動(dòng)單元41啟動(dòng)第二進(jìn)程之后,第二讀取單元51使第二進(jìn)程讀取第一進(jìn)程保存的鏡像數(shù)據(jù),第二進(jìn)程通過讀取鏡像數(shù)據(jù)讀取共享數(shù)據(jù)。
[0129]判斷單元12用于在第一進(jìn)程在將共享數(shù)據(jù)保存為鏡像數(shù)據(jù)之后,通過第一進(jìn)程判斷是否需要對(duì)共享數(shù)據(jù)進(jìn)行修改。
[0130]修改單元22用于在第一進(jìn)程在確定需要對(duì)共享數(shù)據(jù)進(jìn)行修改后,修改共享數(shù)據(jù)對(duì)應(yīng)的鏡像數(shù)據(jù)。
[0131]發(fā)送單元32用于通過第一進(jìn)程將修改后的鏡像數(shù)據(jù)發(fā)送至共享進(jìn)程。
[0132]接收單元42用于通過第二進(jìn)程接收共享進(jìn)程發(fā)送的修改后的共享數(shù)據(jù),其中,共享數(shù)據(jù)在接收到修改后的鏡像數(shù)據(jù)之后,對(duì)共享數(shù)據(jù)進(jìn)行修改,并將修改后的共享數(shù)據(jù)發(fā)送至第二進(jìn)程。
[0133]第一進(jìn)程根據(jù)共享數(shù)據(jù)的內(nèi)容判斷是否需要對(duì)共享數(shù)據(jù)進(jìn)行修改,如果第一進(jìn)程確定需要對(duì)共享數(shù)據(jù)進(jìn)行修改,第一進(jìn)程修改共享數(shù)據(jù)對(duì)應(yīng)的鏡像數(shù)據(jù)。
[0134]第一進(jìn)程對(duì)鏡像數(shù)據(jù)進(jìn)行修改之后,將修改后的鏡像數(shù)據(jù)發(fā)送至共享進(jìn)程,由于鏡像數(shù)據(jù)與共享數(shù)據(jù)相同,因此,修改鏡像數(shù)據(jù)相當(dāng)于修改共享數(shù)據(jù)。共享進(jìn)程接收修改后的鏡像數(shù)據(jù)后,按照修改后的鏡像數(shù)據(jù)修改共享數(shù)據(jù),將共享數(shù)據(jù)修改為修改后的鏡像數(shù)據(jù)。
[0135]在共享進(jìn)程修改共享數(shù)據(jù)為修改后的鏡像數(shù)據(jù)之后,通知第二進(jìn)程共享數(shù)據(jù)已經(jīng)發(fā)生更改,第二進(jìn)程可以通過第一進(jìn)程重新讀取修改后的共享數(shù)據(jù)。
[0136]需要說明的是,上述第二進(jìn)程是多個(gè)進(jìn)程中的任一進(jìn)程,并且,由于共享進(jìn)程對(duì)第二進(jìn)程進(jìn)行過注冊(cè),因此,第二進(jìn)程僅作為讀取共享數(shù)據(jù)的注冊(cè)過的進(jìn)程中的任意一個(gè)進(jìn)程。
[0137]應(yīng)該理解的是,在共享進(jìn)程中的共享數(shù)據(jù)修改之后,可以對(duì)所有已經(jīng)注冊(cè)過的進(jìn)程發(fā)送共享數(shù)據(jù)已經(jīng)修改的消息,注冊(cè)過的所有進(jìn)程根據(jù)共享數(shù)據(jù)已經(jīng)修改的消息更新注冊(cè)過的所有進(jìn)程讀取的共享數(shù)據(jù)。
[0138]在多個(gè)進(jìn)程中的任意一個(gè)進(jìn)程更新共享數(shù)據(jù)時(shí),在將更新后的鏡像數(shù)據(jù)發(fā)送給共享進(jìn)程之后,共享進(jìn)程可以通知所有注冊(cè)了該共享數(shù)據(jù)的進(jìn)程對(duì)讀取的共享數(shù)據(jù)進(jìn)行修改,使得所有進(jìn)程獲得的共享數(shù)據(jù)一致。由于可以通過多個(gè)進(jìn)程的鏡像數(shù)據(jù)更新多個(gè)進(jìn)程讀取的共享數(shù)據(jù),從而提高了多個(gè)進(jìn)程獲取共享數(shù)據(jù)的效率。
[0139]進(jìn)一步地,為了更新已經(jīng)讀取的共享數(shù)據(jù),該多進(jìn)程共享數(shù)據(jù)處理裝置還包括:
[0140]創(chuàng)建單元用于在第一進(jìn)程讀取共享數(shù)據(jù)之前,啟動(dòng)共享進(jìn)程,在啟動(dòng)共享進(jìn)程之后,通過共享進(jìn)程創(chuàng)建消息窗口,其中,消息窗口用于接收第一進(jìn)程和第二進(jìn)程發(fā)送的進(jìn)程間通信消息。
[0141]共享進(jìn)程創(chuàng)建的消息窗口能夠接收多個(gè)進(jìn)程發(fā)送的進(jìn)程間通信消息,進(jìn)程間通信消息包括但不限于進(jìn)程間的共享數(shù)據(jù)通信。進(jìn)程間通信消息包括命名管道、消息、信號(hào)量、共享內(nèi)存和網(wǎng)絡(luò)套接字(scoket)等。
[0142]命名管道是一種簡單的進(jìn)程間通信機(jī)制,命名管道可以在同一臺(tái)計(jì)算機(jī)的不同進(jìn)程之間或者在跨越一個(gè)網(wǎng)絡(luò)的不同計(jì)算機(jī)的不同進(jìn)程之間,支持可靠的,單向或者雙向的數(shù)據(jù)通信。由于命名管道利用重定向器,通過一個(gè)網(wǎng)絡(luò),在多個(gè)進(jìn)程間建立通信,并不需要關(guān)心網(wǎng)絡(luò)協(xié)議的細(xì)節(jié),并且,命名管道具有較高的安全性。
[0143]信號(hào)量是在多線程環(huán)境下使用的一種裝置,可以用來保證兩個(gè)或者多個(gè)關(guān)鍵代碼段不被開發(fā)并調(diào)用。在進(jìn)入一個(gè)關(guān)鍵代碼段之前,線程需要獲取一個(gè)信號(hào)量,在該關(guān)鍵代碼段完成之后,該線程釋放信號(hào)量。其他需要進(jìn)入該關(guān)鍵代碼段的線程必須等待直到第一個(gè)線程釋放信號(hào)量。
[0144]共享內(nèi)存是指在多處理器的計(jì)算機(jī)系統(tǒng)中,可以被不同中央處理器訪問的大容量內(nèi)存。由于多個(gè)中央處理器需要快速訪問存儲(chǔ)器,這樣就要對(duì)存儲(chǔ)器進(jìn)行緩存。任何一個(gè)緩存的數(shù)據(jù)被更新后,由于其他處理器也可能要存取數(shù)據(jù),共享內(nèi)存就需要立即更新,否則不同的處理器可能用到不同的數(shù)據(jù)。共享內(nèi)存是一種多進(jìn)程之間的通信方法,這種方法通常用于一個(gè)程序的多進(jìn)程間通信,多個(gè)程序間也可以通過共享內(nèi)存來傳遞信息。
[0145]共享進(jìn)程創(chuàng)建消息窗口之后,可以接收多個(gè)進(jìn)程中的第一進(jìn)程和第二進(jìn)程發(fā)送的修改后的鏡像數(shù)據(jù)的信息。
[0146]接收單元用于在第一進(jìn)程對(duì)共享數(shù)據(jù)的鏡像數(shù)據(jù)進(jìn)行修改之后,共享進(jìn)程接收第一進(jìn)程通過進(jìn)程間通信消息發(fā)送的修改后的鏡像數(shù)據(jù)。
[0147]第一進(jìn)程對(duì)共享數(shù)據(jù)對(duì)應(yīng)的鏡像數(shù)據(jù)進(jìn)行修改之后,通過進(jìn)程間通信消息將修改后的鏡像數(shù)據(jù)發(fā)送至共享進(jìn)程。
[0148]共享進(jìn)程接收到修改后的鏡像數(shù)據(jù)之后,按照修改后的鏡像數(shù)據(jù)進(jìn)行修改,目的是使得所有讀取共享進(jìn)程中的共享數(shù)據(jù)的進(jìn)程能夠讀取到相同的共享數(shù)據(jù),從而保證多個(gè)進(jìn)程讀取共享數(shù)據(jù)的一致性。
[0149]修改單元用于使共享進(jìn)程基于修改后的鏡像數(shù)據(jù)對(duì)共享數(shù)據(jù)進(jìn)行修改。以及
[0150]共享進(jìn)程基于修改后的鏡像數(shù)據(jù)對(duì)共享數(shù)據(jù)的修改,可以首先比較修改后的鏡像數(shù)據(jù)與共享數(shù)據(jù)的不同,將與修改后的鏡像數(shù)據(jù)不同的共享數(shù)據(jù)修改為與修改后的鏡像數(shù)據(jù)相同,也可以直接用修改后的鏡像數(shù)據(jù)替換共享數(shù)據(jù)。
[0151]發(fā)送單元用于使共享進(jìn)程通過進(jìn)程間通信消息將修改的共享數(shù)據(jù)發(fā)送至第二進(jìn)程。
[0152]共享進(jìn)程將修改后的共享數(shù)據(jù)發(fā)送至第二進(jìn)程,其中,第二進(jìn)程是已經(jīng)注冊(cè)過共享進(jìn)程的多個(gè)進(jìn)程中的任意一個(gè)。
[0153]需要說明的是,上述過程僅用第一進(jìn)程為例對(duì)本發(fā)明實(shí)施例的修改共享數(shù)據(jù)并將修改后的共享數(shù)據(jù)發(fā)送至其他進(jìn)程,本發(fā)明實(shí)施例的第二進(jìn)程也可以修改與共享數(shù)據(jù)對(duì)應(yīng)的鏡像數(shù)據(jù),并將修改后的鏡像數(shù)據(jù)發(fā)送給共享進(jìn)程,再由共享進(jìn)程將修改后的共享數(shù)據(jù)發(fā)送給其他已經(jīng)注冊(cè)的進(jìn)程。
[0154]多個(gè)進(jìn)程中的任意一個(gè)進(jìn)程在對(duì)鏡像數(shù)據(jù)進(jìn)行修改之后,將修改后的鏡像數(shù)據(jù)發(fā)送至共享進(jìn)程,共享進(jìn)程按照修改后的鏡像數(shù)據(jù)修改共享數(shù)據(jù),并通知其他進(jìn)程更新鏡像數(shù)據(jù)至修改后的共享數(shù)據(jù),其他進(jìn)程更新鏡像數(shù)據(jù)的方法與多個(gè)進(jìn)程讀取共享數(shù)據(jù)的方法相同,即第一進(jìn)程讀取修改后的共享數(shù)據(jù),并將修改后的共享數(shù)據(jù)保存為鏡像數(shù)據(jù),第二進(jìn)程獲取修改后的共享數(shù)據(jù)對(duì)應(yīng)的鏡像數(shù)據(jù),進(jìn)而第二進(jìn)程獲取修改后的共享數(shù)據(jù)。通過這種方法,在共享數(shù)據(jù)修改之后,多個(gè)需要讀取共享數(shù)據(jù)的進(jìn)程將原來讀取的鏡像數(shù)據(jù)更新為修改后的共享數(shù)據(jù),不僅提高了讀取共享數(shù)據(jù)的效率,還能通過共享進(jìn)程維護(hù)多個(gè)進(jìn)程讀取到的共享數(shù)據(jù)的統(tǒng)一性,使得共享數(shù)據(jù)的讀取和更新更加方便和智能。
[0155]進(jìn)一步地,多進(jìn)程共享數(shù)據(jù)處理裝置還包括:保存單元,用于在共享進(jìn)程基于修改后的鏡像數(shù)據(jù)對(duì)共享數(shù)據(jù)進(jìn)行修改之后,通過共享進(jìn)程將修改后的共享數(shù)據(jù)保存在共享進(jìn)程所運(yùn)行的設(shè)備的內(nèi)存中,或者,上傳單元,用于在共享進(jìn)程基于修改后的鏡像數(shù)據(jù)對(duì)共享數(shù)據(jù)進(jìn)行修改之后,通過共享進(jìn)程將修改后的共享數(shù)據(jù)上傳至服務(wù)器。
[0156]共享進(jìn)程將修改后的共享數(shù)據(jù)保存在共享進(jìn)程所運(yùn)行設(shè)備的內(nèi)存中可以供其他進(jìn)程直接讀取存儲(chǔ)在該運(yùn)行設(shè)備內(nèi)存中保存的共享數(shù)據(jù),將修改后的共享數(shù)據(jù)上傳至服務(wù)器可以節(jié)約共享進(jìn)程的內(nèi)存空間。
[0157]本發(fā)明實(shí)施例還提供了一種計(jì)算機(jī)存儲(chǔ)介質(zhì)。該計(jì)算機(jī)存儲(chǔ)介質(zhì)可存儲(chǔ)有程序,該程序用于執(zhí)行上述的多進(jìn)程共享數(shù)據(jù)處理方法中的部分或全部步驟。
[0158]需要說明的是,對(duì)于前述的各方法實(shí)施例,為了簡單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本發(fā)明,某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作和模塊并不一定是本發(fā)明所必須的。
[0159]在上述實(shí)施例中,對(duì)各個(gè)實(shí)施例的描述都各有側(cè)重,某個(gè)實(shí)施例中沒有詳述的部分,可以參見其他實(shí)施例的相關(guān)描述。<