多進(jìn)程共享數(shù)據(jù)處理方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,具體而言,涉及一種多進(jìn)程共享數(shù)據(jù)處理方法和裝置。
【背景技術(shù)】
[0002]現(xiàn)有技術(shù)方案解決多個(gè)進(jìn)程間數(shù)據(jù)共享,一般都采用共享內(nèi)存的方式,也就是多個(gè)進(jìn)程讀寫同一塊物理內(nèi)存,通過其中某個(gè)進(jìn)程來維護(hù)共享內(nèi)存的共享數(shù)據(jù)。
[0003]現(xiàn)有技術(shù)有如下缺點(diǎn):
[0004]為了保證多個(gè)進(jìn)程讀取數(shù)據(jù)的一致性,進(jìn)程在訪問共享內(nèi)存前需要加線程鎖。線程鎖會降低進(jìn)程讀寫內(nèi)存的效率,特別是在多進(jìn)程頻繁訪問共享內(nèi)存的情況下,線程鎖更大程度的減低進(jìn)程讀寫內(nèi)存的效率。
[0005]共享內(nèi)存只是共享數(shù)據(jù)存儲區(qū)域,不能及時(shí)更新共享數(shù)據(jù)。例如A進(jìn)程更新了共享內(nèi)存中的數(shù)據(jù),B進(jìn)程并不知道,需要由A進(jìn)程來主動(dòng)通知B進(jìn)程,在進(jìn)程較多的情況下,上述更新共享數(shù)據(jù)的方式不僅繁瑣,還大大降低了進(jìn)程讀寫內(nèi)存的效率。
[0006]針對現(xiàn)有技術(shù)中進(jìn)程讀寫內(nèi)存效率比較低的問題,目前尚未提出有效的解決方案。
【發(fā)明內(nèi)容】
[0007]本發(fā)明實(shí)施例的主要目的在于提供一種多進(jìn)程共享數(shù)據(jù)處理方法和裝置,以解決現(xiàn)有技術(shù)中現(xiàn)有技術(shù)中進(jìn)程讀寫內(nèi)存效率比較低的問題。
[0008]為了實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明實(shí)施例的一個(gè)方面,提供了一種多進(jìn)程共享數(shù)據(jù)處理方法。該方法包括:通過多個(gè)進(jìn)程讀取共享數(shù)據(jù),多個(gè)進(jìn)程包括第一進(jìn)程和第二進(jìn)程,多進(jìn)程共享數(shù)據(jù)處理方法包括:啟動(dòng)第一進(jìn)程;第一進(jìn)程讀取共享數(shù)據(jù);第一進(jìn)程在讀取共享數(shù)據(jù)之后,將共享數(shù)據(jù)保存為鏡像數(shù)據(jù);啟動(dòng)第二進(jìn)程;以及第二進(jìn)程通過讀取鏡像數(shù)據(jù)讀取共享數(shù)據(jù)。
[0009]為了實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明實(shí)施例的另一方面,提供了一種多進(jìn)程共享數(shù)據(jù)處理裝置。該裝置包括:多進(jìn)程共享數(shù)據(jù)處理裝置通過多個(gè)進(jìn)程讀取共享數(shù)據(jù),多個(gè)進(jìn)程包括第一進(jìn)程和第二進(jìn)程,多進(jìn)程共享數(shù)據(jù)處理裝置包括:第一啟動(dòng)單元,用于啟動(dòng)第一進(jìn)程;第一讀取單元,用于通過第一進(jìn)程讀取共享數(shù)據(jù);保存單元,用于在第一進(jìn)程在讀取共享數(shù)據(jù)之后,將共享數(shù)據(jù)保存為鏡像數(shù)據(jù);第二啟動(dòng)單元,用于啟動(dòng)第二進(jìn)程;以及第二讀取單元,用于第二進(jìn)程通過讀取鏡像數(shù)據(jù)讀取共享數(shù)據(jù)。
[0010]通過本發(fā)明實(shí)施例,解決了現(xiàn)有技術(shù)中進(jìn)程讀寫內(nèi)存效率比較低的問題,進(jìn)而達(dá)到了提高進(jìn)程讀寫內(nèi)存效率的效果。
【附圖說明】
[0011]構(gòu)成本申請的一部分的附圖用來提供對本發(fā)明的進(jìn)一步理解,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中:
[0012]圖1是根據(jù)本發(fā)明第一實(shí)施例的多進(jìn)程共享數(shù)據(jù)處理方法的流程圖;
[0013]圖2是根據(jù)本發(fā)明第二實(shí)施例的多進(jìn)程共享數(shù)據(jù)處理方法的流程圖;
[0014]圖3是根據(jù)本發(fā)明實(shí)施例的多進(jìn)程共享數(shù)據(jù)處理方法的示意圖;
[0015]圖4是根據(jù)本發(fā)明第三實(shí)施例的多進(jìn)程共享數(shù)據(jù)處理方法的流程圖;
[0016]圖5是根據(jù)本發(fā)明實(shí)施例的多進(jìn)程共享數(shù)據(jù)處理方法的數(shù)據(jù)處理流程圖;
[0017]圖6是根據(jù)本發(fā)明第一實(shí)施例的多進(jìn)程共享數(shù)據(jù)處理裝置的示意圖;
[0018]圖7是根據(jù)本發(fā)明第二實(shí)施例的多進(jìn)程共享數(shù)據(jù)處理裝置的示意圖;以及
[0019]圖8是根據(jù)本發(fā)明第三實(shí)施例的多進(jìn)程共享數(shù)據(jù)處理裝置的示意圖。
【具體實(shí)施方式】
[0020]需要說明的是,在不沖突的情況下,本申請中的實(shí)施例及實(shí)施例中的特征可以相互組合。下面將參考附圖并結(jié)合實(shí)施例來詳細(xì)說明本發(fā)明。
[0021 ] 為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分的實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本發(fā)明保護(hù)的范圍。
[0022]需要說明的是,本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”等是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本發(fā)明的實(shí)施例例如能夠以除了在這里圖示或描述的那些以外的順序?qū)嵤4送?,術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。
[0023]本發(fā)明實(shí)施例提供了一種多進(jìn)程共享數(shù)據(jù)處理方法。
[0024]為了便于對本發(fā)明實(shí)施方案的理解,首先介紹幾個(gè)術(shù)語,具體如下:
[0025]進(jìn)程:進(jìn)程是一個(gè)具有一定獨(dú)立功能的程序關(guān)于某個(gè)數(shù)據(jù)集合的一次運(yùn)行活動(dòng)。它是操作系統(tǒng)動(dòng)態(tài)執(zhí)行的基本單元,在傳統(tǒng)的操作系統(tǒng)中,進(jìn)程既是基本的分配單元,也是基本的執(zhí)行單元。每一個(gè)進(jìn)程都有它自己的地址空間,包括文本區(qū)域(text reg1n)、數(shù)據(jù)區(qū)域(data reg1n)和堆棧(stack reg1n)。
[0026]進(jìn)程間通信(Inter-Process Communicat1n,簡稱IPC),提供了各種進(jìn)程間通信的方法。操作系統(tǒng)提供的IPC方式包括:命名管道、消息、信號量、共享內(nèi)存、網(wǎng)絡(luò)Socket等。
[0027]共享內(nèi)存:被多個(gè)進(jìn)程共享的一部分物理內(nèi)存。共享內(nèi)存是進(jìn)程間共享數(shù)據(jù)的一種最快的方法,一個(gè)進(jìn)程向共享內(nèi)存區(qū)域?qū)懭肓藬?shù)據(jù),共享這個(gè)內(nèi)存區(qū)域的所有進(jìn)程就可以立刻看到其中的內(nèi)容。
[0028]線程鎖:在多線程編程里面,一些敏感數(shù)據(jù)不允許被多個(gè)線程同時(shí)訪問,此時(shí)就使用同步訪問技術(shù),保證數(shù)據(jù)在任何時(shí)刻,最多有一個(gè)線程訪問,以保證數(shù)據(jù)的完整性。線程鎖就是同步訪問技術(shù),具體的實(shí)現(xiàn)包含:互斥量、臨界區(qū)、信號量等。
[0029]圖1是根據(jù)本發(fā)明第一實(shí)施例的多進(jìn)程共享數(shù)據(jù)處理方法的流程圖。如圖所示,該數(shù)據(jù)處理方法包括如下步驟:
[0030]本發(fā)明實(shí)施例提供的多進(jìn)程共享數(shù)據(jù)處理方法中,可以通過多個(gè)進(jìn)程讀取共享數(shù)據(jù),其中,多個(gè)進(jìn)程包括第一進(jìn)程和第二進(jìn)程。第一進(jìn)程和第二進(jìn)程是多個(gè)進(jìn)程中的任意一個(gè)進(jìn)程。
[0031]步驟S101,啟動(dòng)第一進(jìn)程。
[0032]步驟S102,第一進(jìn)程讀取共享數(shù)據(jù)。
[0033]步驟S103,第一進(jìn)程在讀取共享數(shù)據(jù)之后,將共享數(shù)據(jù)保存為鏡像數(shù)據(jù)。
[0034]步驟S104,啟動(dòng)第二進(jìn)程。
[0035]步驟S105,第二進(jìn)程通過讀取鏡像數(shù)據(jù)讀取共享數(shù)據(jù)。
[0036]在啟動(dòng)第一進(jìn)程之后,第一進(jìn)程讀取共享數(shù)據(jù),在讀取共享數(shù)據(jù)之后,第一進(jìn)程將共享數(shù)據(jù)保存為鏡像數(shù)據(jù)。如果第二進(jìn)程需要讀取共享數(shù)據(jù),則啟動(dòng)第二進(jìn)程之后,第二進(jìn)程讀取第一進(jìn)程保存的鏡像數(shù)據(jù),第二進(jìn)程通過讀取鏡像數(shù)據(jù)讀取共享數(shù)據(jù)。
[0037]鏡像數(shù)據(jù)與共享數(shù)據(jù)相同,第一進(jìn)程在讀取共享數(shù)據(jù)之后,將共享數(shù)據(jù)保存在第一進(jìn)程的數(shù)據(jù)區(qū)域,該數(shù)據(jù)區(qū)域可以是一個(gè)虛擬內(nèi)存或者其他可以用來保存數(shù)據(jù)的區(qū)域。
[0038]第二進(jìn)程讀取第一進(jìn)程保存的鏡像數(shù)據(jù),而鏡像數(shù)據(jù)通過保存共享數(shù)據(jù)得到,從而使得第二進(jìn)程讀取到的鏡像數(shù)據(jù)與第一進(jìn)程讀取到的共享數(shù)據(jù)相同,即第二進(jìn)程讀取得到共享數(shù)據(jù)。
[0039]通過第一進(jìn)程保存鏡像數(shù)據(jù),第二進(jìn)程通過讀取第一進(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ù)的效率。
[0040]圖2是根據(jù)本發(fā)明第二實(shí)施例的多進(jìn)程共享數(shù)據(jù)處理方法的流程圖。該圖示出了在第一進(jìn)程讀取共享數(shù)據(jù)之前,多進(jìn)程共享數(shù)據(jù)處理方法包括如下步驟:
[0041]步驟S201,啟動(dòng)共享進(jìn)程。共享進(jìn)程中存儲了共享數(shù)據(jù)。
[0042]步驟S202,共享進(jìn)程接收第一進(jìn)程的啟動(dòng)消息。第一進(jìn)程的啟動(dòng)消息包含但不限于向共享進(jìn)程請求共享數(shù)據(jù)的消息。
[0043]步驟S203,共享進(jìn)程在接收到第一進(jìn)程的啟動(dòng)消息之后,將共享數(shù)據(jù)發(fā)送至第一進(jìn)程