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

一種共享內(nèi)存的多個(gè)程序間數(shù)據(jù)同步方法和裝置與流程

文檔序號(hào):11276141閱讀:611來(lái)源:國(guó)知局
一種共享內(nèi)存的多個(gè)程序間數(shù)據(jù)同步方法和裝置與流程

本發(fā)明涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,尤其涉及一種共享內(nèi)存的多個(gè)程序間數(shù)據(jù)同步方法和裝置。



背景技術(shù):

目前,為了實(shí)現(xiàn)不同程序件的同步,一般采用如下兩種方式:

1)日志同步,即,每個(gè)程序?qū)⒚恳徊降牟僮骱筒僮鹘Y(jié)果寫(xiě)入日志,另一個(gè)程序讀取日志,并解析還原操作,以實(shí)現(xiàn)同步。

2)共享內(nèi)存,即,多個(gè)程序通過(guò)共享內(nèi)存來(lái)共享數(shù)據(jù)。

然而,上述方式1日志同步的方式多用于故障后回滾數(shù)據(jù)等非實(shí)時(shí)場(chǎng)景,例如:mysql的binlog。通過(guò)該方式雖然可以實(shí)現(xiàn)同步,但是,如果希望做到實(shí)時(shí)同步,則對(duì)硬盤的讀寫(xiě)速度要求很高,實(shí)現(xiàn)起來(lái)代價(jià)太大,因此,幾乎無(wú)法通過(guò)該方式實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)同步。

上述方式2雖然可以實(shí)現(xiàn)0延遲的數(shù)據(jù)同步,但是由于內(nèi)存沒(méi)有寫(xiě)保護(hù),因此會(huì)導(dǎo)致多個(gè)程序?qū)ν粔K數(shù)據(jù)反復(fù)進(jìn)行擦寫(xiě),容易導(dǎo)致使用同一塊內(nèi)存的程序全部崩潰。

針對(duì)如何實(shí)現(xiàn)多個(gè)程序間的數(shù)據(jù)同步,目前尚未提出有效的解決方案。



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

本發(fā)明實(shí)施例提供一種共享內(nèi)存的多個(gè)程序間數(shù)據(jù)同步方法和裝置,以實(shí)現(xiàn)多個(gè)程序間的數(shù)據(jù)同步。

一方面,本發(fā)明實(shí)施例提供了一種共享內(nèi)存的多個(gè)程序間數(shù)據(jù)同步方法,包括:

針對(duì)共享內(nèi)存的多個(gè)程序,當(dāng)任一程序接收到新的請(qǐng)求時(shí),生成設(shè)定結(jié)構(gòu)的操作命令并執(zhí)行,以及將生成的操作命令寫(xiě)入預(yù)設(shè)內(nèi)存空間中;需要同步數(shù)據(jù)的程序監(jiān)控所述預(yù)設(shè)內(nèi)存空間;以及在監(jiān)控到所述預(yù)設(shè)內(nèi)存空間中寫(xiě)入新的操作命令后,讀取并模擬完成所述新的操作命令,實(shí)現(xiàn)數(shù)據(jù)同步。

可選地,所述預(yù)設(shè)內(nèi)存空間是從共享內(nèi)存中劃分出的固定大小的內(nèi)存區(qū)塊,所述預(yù)設(shè)內(nèi)存空間包括:數(shù)據(jù)存儲(chǔ)區(qū)塊、信息記錄區(qū)塊;其中,所述數(shù)據(jù)存儲(chǔ)區(qū)塊用于存儲(chǔ)操作命令,所述信息記錄區(qū)塊用于存儲(chǔ)數(shù)據(jù)存儲(chǔ)區(qū)塊的最后寫(xiě)入數(shù)據(jù)時(shí)間和大??;需要同步數(shù)據(jù)的程序監(jiān)控所述預(yù)設(shè)內(nèi)存空間,具體包括:需要同步數(shù)據(jù)的程序監(jiān)控預(yù)設(shè)內(nèi)存空間中、存儲(chǔ)于信息記錄區(qū)塊的所述最后寫(xiě)入數(shù)據(jù)時(shí)間;以及監(jiān)控到所述預(yù)設(shè)內(nèi)存空間中寫(xiě)入新的操作命令的方法,具體包括:如果所述最后寫(xiě)入數(shù)據(jù)時(shí)間大于本程序記錄的最后同步數(shù)據(jù)時(shí)間,則判定所述預(yù)設(shè)內(nèi)存空間中寫(xiě)入新的操作命令。

可選地,所述操作命令采用帶有時(shí)序的信令結(jié)構(gòu),具體信令結(jié)構(gòu)包括如下字段:信令開(kāi)始標(biāo)志、本信令內(nèi)數(shù)據(jù)長(zhǎng)度、時(shí)間戳、被讀取次數(shù)、最后讀取時(shí)間、操作命令內(nèi)容、附加參數(shù)和數(shù)據(jù)、信令結(jié)束標(biāo)志;以及所述讀取并模擬完成所述新的操作命令,實(shí)現(xiàn)數(shù)據(jù)同步之后,還包括:將讀取的所述新的操作命令中,被讀取次數(shù)字段的數(shù)值加一,并將最后讀取時(shí)間字段修改為本程序的讀取時(shí)間。

可選地,將操作命令按照先進(jìn)先出的策略,按內(nèi)存地址從前向后循環(huán)寫(xiě)入所述數(shù)據(jù)存儲(chǔ)區(qū)塊中。

可選地,上述方法還包括:從共享內(nèi)存中劃分出部分存儲(chǔ)區(qū)域作為所述預(yù)設(shè)內(nèi)存空間,并設(shè)置所述預(yù)設(shè)內(nèi)存空間允許被共享內(nèi)存的多個(gè)程序?qū)懭牒妥x取數(shù)據(jù)。

另一方面,本發(fā)明實(shí)施例提供了一種共享內(nèi)存的多個(gè)程序間數(shù)據(jù)同步裝置,可以包括:

寫(xiě)入模塊,用于針對(duì)共享內(nèi)存的多個(gè)程序,當(dāng)任一程序接收到新的請(qǐng)求時(shí),生成設(shè)定結(jié)構(gòu)的操作命令并執(zhí)行,以及將生成的操作命令寫(xiě)入預(yù)設(shè)內(nèi)存空間中;監(jiān)控模塊,用于需要同步數(shù)據(jù)的程序監(jiān)控所述預(yù)設(shè)內(nèi)存空間;以及同步模塊,用于在監(jiān)控到所述預(yù)設(shè)內(nèi)存空間中寫(xiě)入新的操作命令后,讀取并模擬完成所述新的操作命令,實(shí)現(xiàn)數(shù)據(jù)同步。

可選地,所述預(yù)設(shè)內(nèi)存空間是從共享內(nèi)存中劃分出的固定大小的內(nèi)存區(qū)塊,所述預(yù)設(shè)內(nèi)存空間包括:數(shù)據(jù)存儲(chǔ)區(qū)塊、信息記錄區(qū)塊;其中,所述數(shù)據(jù)存儲(chǔ)區(qū)塊用于存儲(chǔ)操作命令,所述信息記錄區(qū)塊用于存儲(chǔ)數(shù)據(jù)存儲(chǔ)區(qū)塊的最后寫(xiě)入數(shù)據(jù)時(shí)間和大??;其中,所述監(jiān)控模塊具體用于需要同步數(shù)據(jù)的程序監(jiān)控預(yù)設(shè)內(nèi)存空間中、存儲(chǔ)于信息記錄區(qū)塊的所述最后寫(xiě)入數(shù)據(jù)時(shí)間;所述同步模塊具體用于在所述最后寫(xiě)入數(shù)據(jù)時(shí)間大于本程序記錄的最后同步數(shù)據(jù)時(shí)間的情況下,判定所述預(yù)設(shè)內(nèi)存空間中寫(xiě)入新的操作命令。

可選地,所述操作命令采用帶有時(shí)序的信令結(jié)構(gòu),具體信令結(jié)構(gòu)包括如下字段:信令開(kāi)始標(biāo)志、本信令內(nèi)數(shù)據(jù)長(zhǎng)度、時(shí)間戳、被讀取次數(shù)、最后讀取時(shí)間、操作命令內(nèi)容、附加參數(shù)和數(shù)據(jù)、信令結(jié)束標(biāo)志;所述同步模塊,還用于在讀取并模擬完成所述新的操作命令,實(shí)現(xiàn)數(shù)據(jù)同步之后,將讀取的所述新的操作命令中,被讀取次數(shù)字段的數(shù)值加一,并將最后讀取時(shí)間字段修改為本程序的讀取時(shí)間。

可選地,所述寫(xiě)入模塊,具體用于將操作命令按照先進(jìn)先出的策略,按內(nèi)存地址從前向后循環(huán)寫(xiě)入所述數(shù)據(jù)存儲(chǔ)區(qū)塊中。

可選地,上述裝置還包括:設(shè)置模塊,用于從共享內(nèi)存中劃分出部分存儲(chǔ)區(qū)域作為所述預(yù)設(shè)內(nèi)存空間,并設(shè)置所述預(yù)設(shè)內(nèi)存空間允許被共享內(nèi)存的多個(gè)程序?qū)懭牒妥x取數(shù)據(jù)。

上述技術(shù)方案具有如下有益效果:因?yàn)殚_(kāi)辟一段預(yù)設(shè)的內(nèi)存空間,對(duì)于共享內(nèi)存的多個(gè)程序都將自身基于新請(qǐng)求的操作命令寫(xiě)入預(yù)設(shè)的內(nèi)存空間中,需要同步數(shù)據(jù)的程序監(jiān)控預(yù)設(shè)內(nèi)存空間;一旦監(jiān)控到預(yù)設(shè)內(nèi)存空間中寫(xiě)入新的操作命令,則讀取并模擬完成新的操作命令,實(shí)現(xiàn)數(shù)據(jù)同步,從而解決了現(xiàn)有的多個(gè)程序共享數(shù)據(jù)時(shí)候存在數(shù)據(jù)沖突的技術(shù),達(dá)到了簡(jiǎn)單高效實(shí)現(xiàn)數(shù)據(jù)共享的技術(shù)效果。

附圖說(shuō)明

為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。

圖1是根據(jù)本發(fā)明實(shí)施例的共享內(nèi)存的多個(gè)程序間數(shù)據(jù)同步方法流程圖;

圖2是根據(jù)本發(fā)明實(shí)施例的共享內(nèi)存的多個(gè)程序間數(shù)據(jù)同步裝置結(jié)構(gòu)框圖;

圖3是根據(jù)本發(fā)明實(shí)施例的程序基于指令進(jìn)行數(shù)據(jù)共享的流程圖;

圖4是根據(jù)本發(fā)明實(shí)施例的信令結(jié)構(gòu)的組成示意圖;

圖5是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)存儲(chǔ)區(qū)塊的示意圖。

具體實(shí)施方式

下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。

考慮到現(xiàn)有的數(shù)據(jù)同步共享方法所存在的問(wèn)題,在本例中提供了一種共享內(nèi)存的多個(gè)程序間數(shù)據(jù)同步方法,如圖1所示,可以包括如下步驟:

步驟101:針對(duì)共享內(nèi)存的多個(gè)程序,當(dāng)任一程序接收到新的請(qǐng)求時(shí),生成設(shè)定結(jié)構(gòu)的操作命令并執(zhí)行,以及將生成的操作命令寫(xiě)入預(yù)設(shè)內(nèi)存空間中;

即,可以為多個(gè)共享數(shù)據(jù)的程序設(shè)置一塊預(yù)設(shè)內(nèi)存空間,這塊內(nèi)存空間是這些程序都可以訪問(wèn)的,且對(duì)于每個(gè)程序而言,如果有對(duì)數(shù)據(jù)的操作或者修改指令,在執(zhí)行這些操作命令的時(shí)候,也會(huì)將這些操作命令寫(xiě)入預(yù)設(shè)內(nèi)存空間中,使得其它程序知道數(shù)據(jù)有修改,并可以基于這種操作命令模擬出新的數(shù)據(jù),從而使得程序之間在共享數(shù)據(jù)的時(shí)候,也不會(huì)出現(xiàn)數(shù)據(jù)沖突。

步驟102:需要同步數(shù)據(jù)的程序監(jiān)控所述預(yù)設(shè)內(nèi)存空間;

步驟103:在監(jiān)控到所述預(yù)設(shè)內(nèi)存空間中寫(xiě)入新的操作命令后,讀取并模擬完成所述新的操作命令,實(shí)現(xiàn)數(shù)據(jù)同步。

對(duì)于共享內(nèi)存的多個(gè)程序中的各個(gè)程序而言,可以是接收請(qǐng)求,并響應(yīng)于所述請(qǐng)求,生成操作命令;然后,執(zhí)行操作命令,并將操作命令按照帶有時(shí)序的信令格式進(jìn)行轉(zhuǎn)換,將格式轉(zhuǎn)換后的操作命令寫(xiě)入所述預(yù)設(shè)內(nèi)存空間中。同時(shí),這些程序還需要實(shí)時(shí)監(jiān)控預(yù)設(shè)內(nèi)存空間中是否有新的操作命令寫(xiě)入,并在監(jiān)控到有新的操作命令寫(xiě)入的情況下,讀取并進(jìn)行模擬,以實(shí)現(xiàn)數(shù)據(jù)的同步。

上述預(yù)設(shè)內(nèi)存空間可以是從內(nèi)存中劃分出的固定大小的內(nèi)存區(qū)塊,其中,所述預(yù)設(shè)內(nèi)存空間中可以包括:數(shù)據(jù)存儲(chǔ)區(qū)塊、存儲(chǔ)區(qū)塊信息記錄區(qū)塊,其中,所述數(shù)據(jù)存儲(chǔ)區(qū)塊用于存儲(chǔ)操作命令,所述存儲(chǔ)區(qū)塊信息記錄區(qū)塊用于存儲(chǔ)數(shù)據(jù)存儲(chǔ)區(qū)塊的最后寫(xiě)入數(shù)據(jù)時(shí)間(即最后寫(xiě)入操作命令的時(shí)間戳)和數(shù)據(jù)存儲(chǔ)區(qū)塊的大小。即,劃分出一塊特定的區(qū)域,所有的程序可以訪問(wèn)該區(qū)域。且該區(qū)域中的信令是按照時(shí)序存儲(chǔ)的,從而可以實(shí)現(xiàn)數(shù)據(jù)不存在沖突的共享。

具體地,需要同步數(shù)據(jù)的程序可以監(jiān)控預(yù)設(shè)內(nèi)存空間中、存儲(chǔ)于信息記錄區(qū)塊的最后寫(xiě)入數(shù)據(jù)時(shí)間,在確定最后寫(xiě)入數(shù)據(jù)時(shí)間大于本程序記錄的最后同步數(shù)據(jù)時(shí)間,那么就確定預(yù)設(shè)內(nèi)存空間中寫(xiě)入了新的操作命令。

上述預(yù)設(shè)內(nèi)存空間中存儲(chǔ)的每條操作命令可以以信令格式存儲(chǔ),其中,信令結(jié)構(gòu)可以包括如下字段:信令開(kāi)始標(biāo)志、本信令內(nèi)數(shù)據(jù)長(zhǎng)度、時(shí)間戳、被讀取次數(shù)、最后被讀取時(shí)間、操作命令內(nèi)容、附加參數(shù)和數(shù)據(jù)、信令結(jié)束標(biāo)志。

然而,值得注意的是,上述所列舉的信令結(jié)構(gòu)僅是一種示意性描述,在實(shí)際實(shí)現(xiàn)的可以包括其它字段,或者是包括上述字段中的部分字段,具體實(shí)現(xiàn)方式可以根據(jù)實(shí)際情況和需要確定,本申請(qǐng)對(duì)此不作限定。

具體地,對(duì)于各個(gè)共享內(nèi)存的程序而言,可以在讀取并模擬完成新的操作命令,實(shí)現(xiàn)數(shù)據(jù)同步之后,將讀取的新的操作命令中,被讀取次數(shù)字段的數(shù)值加一,并將最后讀取時(shí)間字段修改為本程序的讀取時(shí)間。

在一個(gè)實(shí)施方式中,上述操作命令可以是按照先進(jìn)先出的策略,按內(nèi)存地址從前向后循環(huán)寫(xiě)入所述數(shù)據(jù)存儲(chǔ)區(qū)塊中。

基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例中還提供了一種共享內(nèi)存的多個(gè)程序間數(shù)據(jù)同步裝置,如下面的實(shí)施例所述。由于共享內(nèi)存的多個(gè)程序間數(shù)據(jù)同步裝置解決問(wèn)題的原理與共享內(nèi)存的多個(gè)程序間數(shù)據(jù)同步方法相似,因此共享內(nèi)存的多個(gè)程序間數(shù)據(jù)同步裝置的實(shí)施可以參見(jiàn)共享內(nèi)存的多個(gè)程序間數(shù)據(jù)同步方法的實(shí)施,重復(fù)之處不再贅述。以下所使用的,術(shù)語(yǔ)“單元”或者“模塊”可以實(shí)現(xiàn)預(yù)定功能的軟件和/或硬件的組合。盡管以下實(shí)施例所描述的裝置較佳地以軟件來(lái)實(shí)現(xiàn),但是硬件,或者軟件和硬件的組合的實(shí)現(xiàn)也是可能并被構(gòu)想的。圖2是本發(fā)明實(shí)施例的共享內(nèi)存的多個(gè)程序間數(shù)據(jù)同步裝置的一種結(jié)構(gòu)框圖,如圖2所示,可以包括:寫(xiě)入模塊201、監(jiān)控模塊202和同步模塊203,下面對(duì)該結(jié)構(gòu)進(jìn)行說(shuō)明。

寫(xiě)入模塊201,用于針對(duì)共享內(nèi)存的多個(gè)程序,當(dāng)任一程序接收到新的請(qǐng)求時(shí),生成設(shè)定結(jié)構(gòu)的操作命令并執(zhí)行,以及將生成的操作命令寫(xiě)入預(yù)設(shè)內(nèi)存空間中;

監(jiān)控模塊202,用于需要同步數(shù)據(jù)的程序監(jiān)控所述預(yù)設(shè)內(nèi)存空間;以及

同步模塊203,用于在監(jiān)控到所述預(yù)設(shè)內(nèi)存空間中寫(xiě)入新的操作命令后,讀取并模擬完成所述新的操作命令,實(shí)現(xiàn)數(shù)據(jù)同步。

在一個(gè)實(shí)施方式中,所述預(yù)設(shè)內(nèi)存空間是從共享內(nèi)存中劃分出的固定大小的內(nèi)存區(qū)塊,所述預(yù)設(shè)內(nèi)存空間包括:數(shù)據(jù)存儲(chǔ)區(qū)塊、信息記錄區(qū)塊;其中,所述數(shù)據(jù)存儲(chǔ)區(qū)塊用于存儲(chǔ)操作命令,所述信息記錄區(qū)塊用于存儲(chǔ)數(shù)據(jù)存儲(chǔ)區(qū)塊的最后寫(xiě)入數(shù)據(jù)時(shí)間和大?。?/p>

相應(yīng)的,監(jiān)控模塊202具體可以用于需要同步數(shù)據(jù)的程序監(jiān)控預(yù)設(shè)內(nèi)存空間中、存儲(chǔ)于信息記錄區(qū)塊的所述最后寫(xiě)入數(shù)據(jù)時(shí)間;同步模塊203具體可以用于在所述最后寫(xiě)入數(shù)據(jù)時(shí)間大于本程序記錄的最后同步數(shù)據(jù)時(shí)間的情況下,判定所述預(yù)設(shè)內(nèi)存空間中寫(xiě)入新的操作命令。

在一個(gè)實(shí)施方式中,上述操作命令采用帶有時(shí)序的信令結(jié)構(gòu),具體信令結(jié)構(gòu)可以包括但不限于如下字段:信令開(kāi)始標(biāo)志、本信令內(nèi)數(shù)據(jù)長(zhǎng)度、時(shí)間戳、被讀取次數(shù)、最后讀取時(shí)間、操作命令內(nèi)容、附加參數(shù)和數(shù)據(jù)、信令結(jié)束標(biāo)志;

相應(yīng)的,同步模塊203,還用于在讀取并模擬完成所述新的操作命令,實(shí)現(xiàn)數(shù)據(jù)同步之后,將讀取的所述新的操作命令中,被讀取次數(shù)字段的數(shù)值加一,并將最后讀取時(shí)間字段修改為本程序的讀取時(shí)間。

在一個(gè)實(shí)施方式中,上述裝置還可以包括:設(shè)置模塊,用于從共享內(nèi)存中劃分出部分存儲(chǔ)區(qū)域作為所述預(yù)設(shè)內(nèi)存空間,并設(shè)置所述預(yù)設(shè)內(nèi)存空間允許被共享內(nèi)存的多個(gè)程序?qū)懭牒妥x取數(shù)據(jù)。

下面結(jié)合一個(gè)具體實(shí)施例對(duì)上述方法和裝置進(jìn)行說(shuō)明,然而值得注意的是,該具體實(shí)施例僅是為了更好地說(shuō)明本申請(qǐng),并不構(gòu)成對(duì)本申請(qǐng)的不當(dāng)限定。

在本例中,通過(guò)將各個(gè)程序每一步的對(duì)數(shù)據(jù)的處理抽象為標(biāo)準(zhǔn)命令,并按照時(shí)序?qū)?biāo)準(zhǔn)命令寫(xiě)入內(nèi)存,從而實(shí)現(xiàn)多個(gè)程序之間的實(shí)時(shí)數(shù)據(jù)同步,且數(shù)據(jù)同步的延時(shí)對(duì)于外部請(qǐng)求而言幾乎可以忽略不計(jì)。

如圖3所示,程序在每次接收到新的請(qǐng)求的時(shí)候,將自身生成的操作命令寫(xiě)入指定的內(nèi)存中。在該內(nèi)存中,如果有需要同步數(shù)據(jù)的程序啟動(dòng),當(dāng)有對(duì)數(shù)據(jù)新的操作命令的情況下,立刻讀取并模擬完成操作命令。為了實(shí)現(xiàn)該目的,可以設(shè)定同步數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)為帶有時(shí)序的標(biāo)準(zhǔn)結(jié)構(gòu)信令。如圖4所示,信令結(jié)構(gòu)可以包括:信令開(kāi)始標(biāo)志、本信令內(nèi)數(shù)據(jù)長(zhǎng)度、時(shí)間戳、被讀取次數(shù)、最后讀取時(shí)間、操作命令內(nèi)容、附加參數(shù)和數(shù)據(jù)、信令結(jié)束標(biāo)志。

對(duì)于上述信令結(jié)構(gòu)中所包括的若干個(gè)部分,可以按照以下規(guī)則設(shè)定:

1)信令開(kāi)始標(biāo)志

8bit,用于標(biāo)識(shí)整塊完整信令從該位置開(kāi)始;

2)本信令內(nèi)數(shù)據(jù)長(zhǎng)度

8bit+8bit,這兩個(gè)8bit可以分別表示:操作命令的長(zhǎng)度和附加參數(shù)和數(shù)據(jù)的長(zhǎng)度;

3)時(shí)間戳

8bit;

4)被讀取次數(shù)

8bit,用于記錄本數(shù)據(jù)被讀取的次數(shù);

5)最后讀取時(shí)間

8bit,用于記錄本數(shù)據(jù)最后一次被讀取的時(shí)間;

6)操作命令內(nèi)容

不設(shè)定長(zhǎng)度;

7)附加參數(shù)和數(shù)據(jù)

不設(shè)定長(zhǎng)度;

8)信令結(jié)束標(biāo)志

8bit,用于標(biāo)識(shí)本段信令完整結(jié)束。

在內(nèi)存中,上述信令可以按照如下方式存儲(chǔ):劃出一塊固定大小的內(nèi)存,并將本塊內(nèi)存劃分為兩部分,如圖5所示,所有的信令存儲(chǔ)在數(shù)據(jù)存儲(chǔ)區(qū)塊,并在本塊內(nèi)存起始位置出劃分32bit,存儲(chǔ)數(shù)據(jù)存儲(chǔ)區(qū)塊的最后寫(xiě)入數(shù)據(jù)時(shí)間,然后再劃分出32bit,用于存儲(chǔ)數(shù)據(jù)存儲(chǔ)區(qū)塊的大小。在數(shù)據(jù)存儲(chǔ)區(qū)塊中,可以按照f(shuō)ifo(先進(jìn)先出)的策略按內(nèi)存地址的順序從前向后循環(huán)寫(xiě)入。

具體的,可以開(kāi)辟一段遠(yuǎn)大于信令大小的新的干凈內(nèi)存,從這段內(nèi)存的開(kāi)頭開(kāi)始向結(jié)尾順序?qū)懭搿@?,預(yù)計(jì)信令的平均大小為1k,那么可以開(kāi)辟出100m的內(nèi)存用于存儲(chǔ),則當(dāng)本段內(nèi)存寫(xiě)滿時(shí),內(nèi)存已經(jīng)順序存儲(chǔ)了100萬(wàn)條信令。當(dāng)內(nèi)存被寫(xiě)滿之后,可以將最新的信令繼續(xù)從內(nèi)存地址的開(kāi)頭開(kāi)始存入,覆蓋老的失效信令。

在進(jìn)行數(shù)據(jù)同步的時(shí)候,可以按照如下方式進(jìn)行:對(duì)于所有需要進(jìn)行數(shù)據(jù)同步的程序,都需要記錄最后同步數(shù)據(jù)時(shí)間(即本程序最后一次同步數(shù)據(jù)的時(shí)間戳),并在第一次讀取數(shù)據(jù)進(jìn)行同步的時(shí)候,在本段內(nèi)存中從前往后遍歷查詢到第一條大于最后同步數(shù)據(jù)時(shí)間的數(shù)據(jù),讀取本條數(shù)據(jù)后完成同步。之后,需要同步數(shù)據(jù)的程序都需要對(duì)本段內(nèi)存開(kāi)始處32bit的最后寫(xiě)入數(shù)據(jù)時(shí)間進(jìn)行監(jiān)控,每次發(fā)現(xiàn)監(jiān)控得到的最后寫(xiě)入數(shù)據(jù)時(shí)間大于本程序的最后同步數(shù)據(jù)時(shí)間的情況下,讀取同步后的數(shù)據(jù),并將被讀取信令中的被讀取次數(shù)字段加一,并將被讀取信令的最后讀取時(shí)間修改為本程序的讀取時(shí)間。

在上例中,極小的代價(jià)實(shí)現(xiàn)了一個(gè)可靠的程序之間共享內(nèi)存的方案,避免了不同程序在共享內(nèi)存時(shí)出現(xiàn)的反復(fù)擦寫(xiě)同一塊內(nèi)存,而導(dǎo)致的所有使用共享內(nèi)存的程序崩潰的問(wèn)題產(chǎn)生。且上述方案可以方便地接入第三方程序,進(jìn)行日志記錄、程序狀態(tài)監(jiān)控等功能,同時(shí)避免了反復(fù)遍歷內(nèi)存的操作,使得同步時(shí)間減少到可以忽略不計(jì),從而大大降級(jí)了同步數(shù)據(jù)的延時(shí)。

本領(lǐng)域技術(shù)人員還可以了解到本發(fā)明實(shí)施例列出的各種說(shuō)明性邏輯塊(illustrativelogicalblock),單元,和步驟可以通過(guò)電子硬件、電腦軟件,或兩者的結(jié)合進(jìn)行實(shí)現(xiàn)。為清楚展示硬件和軟件的可替換性(interchangeability),上述的各種說(shuō)明性部件(illustrativecomponents),單元和步驟已經(jīng)通用地描述了它們的功能。這樣的功能是通過(guò)硬件還是軟件來(lái)實(shí)現(xiàn)取決于特定的應(yīng)用和整個(gè)系統(tǒng)的設(shè)計(jì)要求。本領(lǐng)域技術(shù)人員可以對(duì)于每種特定的應(yīng)用,可以使用各種方法實(shí)現(xiàn)所述的功能,但這種實(shí)現(xiàn)不應(yīng)被理解為超出本發(fā)明實(shí)施例保護(hù)的范圍。

本發(fā)明實(shí)施例中所描述的各種說(shuō)明性的邏輯塊,或單元都可以通過(guò)通用處理器,數(shù)字信號(hào)處理器,專用集成電路(asic),現(xiàn)場(chǎng)可編程門陣列或其它可編程邏輯裝置,離散門或晶體管邏輯,離散硬件部件,或上述任何組合的設(shè)計(jì)來(lái)實(shí)現(xiàn)或操作所描述的功能。通用處理器可以為微處理器,可選地,該通用處理器也可以為任何傳統(tǒng)的處理器、控制器、微控制器或狀態(tài)機(jī)。處理器也可以通過(guò)計(jì)算裝置的組合來(lái)實(shí)現(xiàn),例如數(shù)字信號(hào)處理器和微處理器,多個(gè)微處理器,一個(gè)或多個(gè)微處理器聯(lián)合一個(gè)數(shù)字信號(hào)處理器核,或任何其它類似的配置來(lái)實(shí)現(xiàn)。

本發(fā)明實(shí)施例中所描述的方法或算法的步驟可以直接嵌入硬件、處理器執(zhí)行的軟件模塊、或者這兩者的結(jié)合。軟件模塊可以存儲(chǔ)于ram存儲(chǔ)器、閃存、rom存儲(chǔ)器、eprom存儲(chǔ)器、eeprom存儲(chǔ)器、寄存器、硬盤、可移動(dòng)磁盤、cd-rom或本領(lǐng)域中其它任意形式的存儲(chǔ)媒介中。示例性地,存儲(chǔ)媒介可以與處理器連接,以使得處理器可以從存儲(chǔ)媒介中讀取信息,并可以向存儲(chǔ)媒介存寫(xiě)信息??蛇x地,存儲(chǔ)媒介還可以集成到處理器中。處理器和存儲(chǔ)媒介可以設(shè)置于asic中,asic可以設(shè)置于用戶終端中??蛇x地,處理器和存儲(chǔ)媒介也可以設(shè)置于用戶終端中的不同的部件中。

在一個(gè)或多個(gè)示例性的設(shè)計(jì)中,本發(fā)明實(shí)施例所描述的上述功能可以在硬件、軟件、固件或這三者的任意組合來(lái)實(shí)現(xiàn)。如果在軟件中實(shí)現(xiàn),這些功能可以存儲(chǔ)與電腦可讀的媒介上,或以一個(gè)或多個(gè)指令或代碼形式傳輸于電腦可讀的媒介上。電腦可讀媒介包括電腦存儲(chǔ)媒介和便于使得讓電腦程序從一個(gè)地方轉(zhuǎn)移到其它地方的通信媒介。存儲(chǔ)媒介可以是任何通用或特殊電腦可以接入訪問(wèn)的可用媒體。例如,這樣的電腦可讀媒體可以包括但不限于ram、rom、eeprom、cd-rom或其它光盤存儲(chǔ)、磁盤存儲(chǔ)或其它磁性存儲(chǔ)裝置,或其它任何可以用于承載或存儲(chǔ)以指令或數(shù)據(jù)結(jié)構(gòu)和其它可被通用或特殊電腦、或通用或特殊處理器讀取形式的程序代碼的媒介。此外,任何連接都可以被適當(dāng)?shù)囟x為電腦可讀媒介,例如,如果軟件是從一個(gè)網(wǎng)站站點(diǎn)、服務(wù)器或其它遠(yuǎn)程資源通過(guò)一個(gè)同軸電纜、光纖電纜、雙絞線、數(shù)字用戶線(dsl)或以例如紅外、無(wú)線和微波等無(wú)線方式傳輸?shù)囊脖话谒x的電腦可讀媒介中。所述的碟片(disk)和磁盤(disc)包括壓縮磁盤、鐳射盤、光盤、dvd、軟盤和藍(lán)光光盤,磁盤通常以磁性復(fù)制數(shù)據(jù),而碟片通常以激光進(jìn)行光學(xué)復(fù)制數(shù)據(jù)。上述的組合也可以包含在電腦可讀媒介中。

以上所述的具體實(shí)施方式,對(duì)本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說(shuō)明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實(shí)施方式而已,并不用于限定本發(fā)明的保護(hù)范圍,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
萝北县| 泗阳县| 乌拉特后旗| 平谷区| 习水县| 丹东市| 康定县| 东源县| 宁阳县| 资兴市| 沂水县| 榆林市| 辉县市| 阿坝| 沙坪坝区| 喀喇沁旗| 来安县| 汾西县| 交口县| 深水埗区| 区。| 大庆市| 峨眉山市| 襄城县| 高州市| 涿鹿县| 独山县| 陈巴尔虎旗| 宣威市| 防城港市| 凤庆县| 鹤岗市| 清镇市| 嫩江县| 郓城县| 澄城县| 陇川县| 蓬莱市| 辰溪县| 磐安县| 张家口市|