啟動(dòng)共享進(jìn)程。該共享進(jìn)程啟動(dòng)后,創(chuàng)建消息窗口。該窗口用來接收其他進(jìn)程發(fā)送的進(jìn)程間通信消息。
[0079]啟動(dòng)第一進(jìn)程。
[0080]啟動(dòng)第一進(jìn)程后,第一進(jìn)程向共享進(jìn)程發(fā)送第一進(jìn)程啟動(dòng)消息,共享進(jìn)程將共享數(shù)據(jù)通過進(jìn)程間通信消息發(fā)送給新啟動(dòng)的第一進(jìn)程,并對(duì)第一進(jìn)程進(jìn)行注冊(cè)。
[0081 ] 第一進(jìn)程接收共享數(shù)據(jù),保存為鏡像數(shù)據(jù)。
[0082]第二進(jìn)程需要讀取共享數(shù)據(jù)時(shí),讀取第一進(jìn)程保存的鏡像數(shù)據(jù)。
[0083]第一進(jìn)程修改共享數(shù)據(jù)時(shí),修改第一進(jìn)程保存的鏡像數(shù)據(jù),再將修改后的鏡像數(shù)據(jù)通過進(jìn)程間通信消息發(fā)送給數(shù)據(jù)共享進(jìn)程。
[0084]共享進(jìn)程收到消息后,基于修改后的鏡像數(shù)據(jù)對(duì)應(yīng)的修改共享數(shù)據(jù),將修改后的共享數(shù)據(jù)發(fā)送給其他的進(jìn)程(即使用共享數(shù)據(jù)的進(jìn)程,如第二進(jìn)程)。同時(shí),第二進(jìn)程負(fù)責(zé)將修改后的共享數(shù)據(jù)保存到共享進(jìn)程所運(yùn)行設(shè)備的內(nèi)存中或者上傳到服務(wù)器。
[0085]綜上所述,本發(fā)明的優(yōu)點(diǎn)如下:
[0086]多個(gè)進(jìn)程中的每個(gè)進(jìn)程都有一份共享數(shù)據(jù)鏡像,多個(gè)進(jìn)程可以同時(shí)讀取共享數(shù)據(jù)共享數(shù)據(jù)的寫操作由獨(dú)立進(jìn)程在同一個(gè)線程內(nèi)完成,不需要加鎖,提高了進(jìn)程讀取共享數(shù)據(jù)的效率。
[0087]共享進(jìn)程監(jiān)控共享數(shù)據(jù),當(dāng)共享數(shù)據(jù)更新后,實(shí)時(shí)向其他讀取共享數(shù)據(jù)的進(jìn)程發(fā)送消息。
[0088]共享數(shù)據(jù)的存儲(chǔ)由共享進(jìn)程完成,可以存儲(chǔ)到本地文件也可以存儲(chǔ)到服務(wù)器,方便隨時(shí)調(diào)用。
[0089]多個(gè)進(jìn)程中的每個(gè)進(jìn)程都保存一份數(shù)據(jù)鏡像,多個(gè)進(jìn)程可以同時(shí)讀寫其本身保存的鏡像數(shù)據(jù),多個(gè)進(jìn)程的讀寫互不影響。
[0090]圖5是根據(jù)本發(fā)明實(shí)施例的多進(jìn)程共享數(shù)據(jù)處理裝置的數(shù)據(jù)處理流程圖。
[0091 ] 如圖所示,共享進(jìn)程啟動(dòng)進(jìn)程之后,加載共享進(jìn)程。
[0092]普通進(jìn)程即上述多個(gè)進(jìn)程中的第一進(jìn)程或者第二進(jìn)程。普通進(jìn)程啟動(dòng)之后,向共享進(jìn)程發(fā)送啟動(dòng)消息,共享進(jìn)程接收到普通進(jìn)程的啟動(dòng)消息后,對(duì)該普通進(jìn)程進(jìn)行注冊(cè),注冊(cè)后將共享數(shù)據(jù)發(fā)送給普通進(jìn)程,普通進(jìn)程將接收到的共享數(shù)據(jù)保存為鏡像數(shù)據(jù),供其他普通進(jìn)程讀取共享數(shù)據(jù)。
[0093]如果普通進(jìn)程需要修改共享數(shù)據(jù),則修改鏡像數(shù)據(jù)并保存為新的鏡像數(shù)據(jù),將更新后的鏡像數(shù)據(jù)發(fā)送給共享進(jìn)程,共享進(jìn)程接收到更改后的鏡像數(shù)據(jù)之后,將原來的共享數(shù)據(jù)更改為接收到的修改后的鏡像數(shù)據(jù),并將更改了共享數(shù)據(jù)的消息發(fā)送給已經(jīng)進(jìn)行注冊(cè)過的普通進(jìn)程。
[0094]本發(fā)明實(shí)施例提供了一種多進(jìn)程共享數(shù)據(jù)處理裝置。
[0095]本發(fā)明實(shí)施例的多進(jìn)程共享數(shù)據(jù)處理裝置可以用于執(zhí)行本發(fā)明實(shí)施例所提供的多進(jìn)程共享數(shù)據(jù)處理方法,本發(fā)明實(shí)施例的多進(jìn)程共享數(shù)據(jù)處理方法也可以通過本發(fā)明實(shí)施例所提供的多進(jìn)程共享數(shù)據(jù)處理裝置來執(zhí)行。
[0096]圖6是根據(jù)本發(fā)明第一實(shí)施例的多進(jìn)程共享數(shù)據(jù)處理裝置的示意圖。如圖所示,該數(shù)據(jù)處理裝置包括第一啟動(dòng)單元11、第一讀取單元21、保存單元31、第二啟動(dòng)單元41和第二讀取單元51。
[0097]本發(fā)明實(shí)施例提供的多進(jìn)程共享數(shù)據(jù)處理裝置中,多進(jìn)程共享數(shù)據(jù)處理裝置通過多個(gè)進(jìn)程讀取共享數(shù)據(jù),多個(gè)進(jìn)程包括第一進(jìn)程和第二進(jìn)程。
[0098]第一啟動(dòng)單元11用于啟動(dòng)第一進(jìn)程。
[0099]第一讀取單元21用于通過第一進(jìn)程讀取共享數(shù)據(jù)。
[0100]保存單元31用于在第一進(jìn)程在讀取共享數(shù)據(jù)之后,將共享數(shù)據(jù)保存為鏡像數(shù)據(jù)。
[0101]第二啟動(dòng)單元41用于啟動(dòng)第二進(jìn)程。
[0102]第二讀取單元51用于第二進(jìn)程通過讀取鏡像數(shù)據(jù)讀取共享數(shù)據(jù)。
[0103]在第一啟動(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ù)。
[0104]鏡像數(shù)據(jù)與共享數(shù)據(jù)相同,第一進(jìn)程在讀取共享數(shù)據(jù)之后,將共享數(shù)據(jù)保存在第一進(jìn)程的數(shù)據(jù)區(qū)域,該數(shù)據(jù)區(qū)域可以是一個(gè)虛擬內(nèi)存或者其他可以用來保存數(shù)據(jù)的區(qū)域。
[0105]第二進(jìn)程讀取第一進(jìn)程保存的鏡像數(shù)據(jù),而鏡像數(shù)據(jù)通過保存共享數(shù)據(jù)得到,從而使得第二進(jìn)程讀取到的鏡像數(shù)據(jù)與第一進(jìn)程讀取到的共享數(shù)據(jù)相同,即第二進(jìn)程讀取得到共享數(shù)據(jù)。
[0106]通過保存單元31保存鏡像數(shù)據(jù)第二讀取單元51通過讀取第一進(jìn)程保存的鏡像數(shù)據(jù)獲得共享數(shù)據(jù)的方法,避免了第一進(jìn)程和第二進(jìn)程讀寫同一塊物理內(nèi)存,并且,在第一進(jìn)程和第二進(jìn)程讀寫共享數(shù)據(jù)的過程中,不需要在訪問共享數(shù)據(jù)之前加線程鎖,避免了線程鎖導(dǎo)致的進(jìn)程讀取共享數(shù)據(jù)的效率較低的問題,從而提高了多個(gè)進(jìn)程讀取共享數(shù)據(jù)的效率。
[0107]圖7是根據(jù)本發(fā)明第二實(shí)施例的多進(jìn)程共享數(shù)據(jù)處理裝置的示意圖。如圖所示,該多進(jìn)程共享數(shù)據(jù)處理裝置包括第一啟動(dòng)單元11、第一讀取單元21、保存單元31、第二啟動(dòng)單元41和第二讀取單元51,還包括:第三啟動(dòng)單元61、接收單元71、發(fā)送單元81和注冊(cè)單元91。
[0108]第一啟動(dòng)單元11用于啟動(dòng)第一進(jìn)程。
[0109]第一讀取單元21用于通過第一進(jìn)程讀取共享數(shù)據(jù)。
[0110]保存單元31用于在第一進(jìn)程在讀取共享數(shù)據(jù)之后,將共享數(shù)據(jù)保存為鏡像數(shù)據(jù)。
[0111]第二啟動(dòng)單元41用于啟動(dòng)第二進(jìn)程。
[0112]第二讀取單元51用于第二進(jìn)程通過讀取鏡像數(shù)據(jù)讀取共享數(shù)據(jù)。
[0113]在第一啟動(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ù)。
[0114]第三啟動(dòng)單元61用于在第一進(jìn)程讀取共享數(shù)據(jù)之前,啟動(dòng)共享進(jìn)程。共享進(jìn)程中存儲(chǔ)了共享數(shù)據(jù)。
[0115]接收單元71用于通過共享進(jìn)程接收第一進(jìn)程的啟動(dòng)消息。第一進(jìn)程的啟動(dòng)消息包含但不限于向共享進(jìn)程請(qǐng)求共享數(shù)據(jù)的消息。
[0116]發(fā)送單元81用于在共享進(jìn)程在接收到第一進(jìn)程的啟動(dòng)消息之后,將共享數(shù)據(jù)發(fā)送至第一進(jìn)程。第一進(jìn)程準(zhǔn)備接收第一進(jìn)程發(fā)送的共享數(shù)據(jù)。
[0117]注冊(cè)單元91用于通過共享進(jìn)程對(duì)第一進(jìn)程進(jìn)行注冊(cè)。
[0118]注冊(cè)單元91通過共享進(jìn)程對(duì)第一進(jìn)程注冊(cè)之后,確定第一進(jìn)程可以從共享進(jìn)程中獲取共享數(shù)據(jù),并且,在共享數(shù)據(jù)發(fā)生改變時(shí),共享進(jìn)程根據(jù)注冊(cè)信息,將共享數(shù)據(jù)發(fā)生更改的信息發(fā)送給第一進(jìn)程,或者將更改后的共享數(shù)據(jù)發(fā)送給第一進(jìn)程。另外,在第一進(jìn)程修改共享數(shù)據(jù)時(shí),可以將修改了共享數(shù)據(jù)的消息發(fā)送給共享進(jìn)程,共享進(jìn)程根據(jù)注冊(cè)信息保存修改后的共享數(shù)據(jù)。
[0119]上述多進(jìn)程共享數(shù)據(jù)處理流程如圖3所示,第一進(jìn)程10將向共享進(jìn)程30發(fā)送啟動(dòng)消息,共享進(jìn)程30接收第一進(jìn)程10的啟動(dòng)消息,并將共享數(shù)據(jù)發(fā)送至第一進(jìn)程10,共享進(jìn)程30對(duì)第一進(jìn)程10進(jìn)程注冊(cè)。第二進(jìn)程20從第一進(jìn)程10中獲取鏡像數(shù)據(jù),從而獲得共享數(shù)據(jù)。
[0120]需要說明的是,在共享進(jìn)程對(duì)第一進(jìn)程進(jìn)行注冊(cè)之后,如果第二進(jìn)程通過第一進(jìn)程讀取共享數(shù)據(jù),則共享進(jìn)程接收第二進(jìn)程讀取注冊(cè)請(qǐng)求,對(duì)第二進(jìn)程進(jìn)行注冊(cè)。任何一個(gè)讀取了共享數(shù)據(jù)的進(jìn)程,共享進(jìn)程對(duì)這些讀取了共享數(shù)據(jù)的進(jìn)程注冊(cè),使得所有讀取共享數(shù)據(jù)的進(jìn)程都能與共享進(jìn)程進(jìn)行通信。
[0121]對(duì)讀取共享數(shù)據(jù)的進(jìn)程進(jìn)行注冊(cè),使得在共享進(jìn)程中的共享數(shù)據(jù)發(fā)生更新時(shí),將更新后的共享數(shù)據(jù)發(fā)送給已經(jīng)注冊(cè)的進(jìn)程,或者在已經(jīng)注冊(cè)的進(jìn)程中的鏡像數(shù)據(jù)發(fā)生更新時(shí),將更新后的共享數(shù)據(jù)發(fā)送給共享進(jìn)程。通過這種方法,實(shí)現(xiàn)了智能更新共享數(shù)據(jù)的方法,無論是共享進(jìn)程中的共享數(shù)據(jù)發(fā)生改變還是其他獲取共享數(shù)據(jù)的進(jìn)程中的鏡像數(shù)據(jù)發(fā)生改變,都能即時(shí)將所有共享數(shù)據(jù)更改為更新后的共享數(shù)據(jù)。
[0122]圖8是根據(jù)本發(fā)明第三實(shí)施例的多進(jìn)程共享數(shù)據(jù)處理裝置的示意圖。該多進(jìn)程共享數(shù)據(jù)處理裝置包括第一啟動(dòng)單元11、第一讀取單元21、保存單元31、第二啟動(dòng)單元41和第二讀取單元51,還包括:判斷單元12、修改單元22、發(fā)送單元32和接收單元