国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      基于標(biāo)記和狀態(tài)向量的帶沖突檢測(cè)的并發(fā)控制方法

      文檔序號(hào):7613026閱讀:148來(lái)源:國(guó)知局
      專(zhuān)利名稱(chēng):基于標(biāo)記和狀態(tài)向量的帶沖突檢測(cè)的并發(fā)控制方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及一種計(jì)算機(jī)支持的協(xié)同工作(CSCW)的技術(shù)領(lǐng)域,尤指一種用于協(xié)同編輯支持物理上分布的多個(gè)協(xié)同者同時(shí)編輯同一文檔的應(yīng)用系統(tǒng),用于保證操作沖突時(shí)一致性的基于標(biāo)記和狀態(tài)向量的帶沖突檢測(cè)的并發(fā)控制裝置及其并發(fā)控制方法。
      背景技術(shù)
      協(xié)同編輯支持物理上分布的多個(gè)協(xié)同者同時(shí)編輯同一文檔,這是一類(lèi)重要的計(jì)算機(jī)支持的協(xié)同工作(CSCW)應(yīng)用系統(tǒng)。協(xié)同編輯是典型的分布式應(yīng)用系統(tǒng),不但要求用戶操作有很快的響應(yīng)速度,通常還有以下特點(diǎn)對(duì)同一時(shí)刻進(jìn)行操作的協(xié)作用戶數(shù)目沒(méi)有限制,對(duì)協(xié)作用戶可以編輯的文檔部分也不加制約,用戶可在任意時(shí)刻編輯共享文檔的任意部分。節(jié)點(diǎn)之間傳送的信息主要是操作信息和參數(shù)以及必要的控制信息。但是,操作的并發(fā)性和網(wǎng)絡(luò)傳輸延遲的不確定性使得維護(hù)并發(fā)操作的一致性變得相當(dāng)困難。一個(gè)操作在遠(yuǎn)程節(jié)點(diǎn)執(zhí)行產(chǎn)生的效果,若不加以調(diào)整和控制,則可能與操作在本地執(zhí)行時(shí)產(chǎn)生的效果不一致,即與用戶希望達(dá)到的效果不一致。這就是所謂的“維護(hù)操作意愿”問(wèn)題?,F(xiàn)有的維護(hù)操作意愿的方法主要是操作變換方法,其特點(diǎn)是著眼于操作本身,通過(guò)變換操作的參數(shù)來(lái)實(shí)現(xiàn)操作意愿的維護(hù)。但是,當(dāng)節(jié)點(diǎn)規(guī)模稍大時(shí),操作之間的關(guān)系變得非常復(fù)雜,考慮全面很不容易,其算法的設(shè)計(jì)難度較大。近年來(lái),國(guó)內(nèi)提出了“文檔標(biāo)注方法”,該方法立足于文檔本身,通過(guò)對(duì)文檔加標(biāo)注屏蔽引起不一致的操作。該方法易于理解,算法設(shè)計(jì)也比較直觀,但它在傳遞操作信息時(shí)需附加操作上下文,隨著操作數(shù)的增加,操作上下文內(nèi)容會(huì)越來(lái)越多,導(dǎo)致網(wǎng)絡(luò)傳輸包長(zhǎng)度不斷增加,加劇網(wǎng)絡(luò)負(fù)載。后面又有人提出“帶狀態(tài)向量的文檔標(biāo)注方法”,但該方法沒(méi)有就如何實(shí)現(xiàn)提出可行方案,同時(shí)也沒(méi)有沖突檢測(cè)和處理,無(wú)法保證操作沖突時(shí)的一致性。因此,我們提出了“基于標(biāo)記和狀態(tài)向量的帶沖突檢測(cè)的實(shí)時(shí)協(xié)同編輯并發(fā)控制方法”。

      發(fā)明內(nèi)容
      為了克服上述不足之處,本發(fā)明的主要目的旨在提供一種沒(méi)有服務(wù)器進(jìn)行集中控制的并發(fā)算法,在文檔標(biāo)注方法的基礎(chǔ)上引入了狀態(tài)向量,優(yōu)先級(jí)規(guī)則,實(shí)現(xiàn)對(duì)操作沖突的檢測(cè)和解除,通過(guò)文檔被插入標(biāo)記和刪除標(biāo)記的操作,并按標(biāo)記規(guī)則執(zhí)行的基于標(biāo)記和狀態(tài)向量的帶沖突檢測(cè)的并發(fā)控制方法。
      本發(fā)明要解決的技術(shù)問(wèn)題是要解決操作的并發(fā)性和網(wǎng)絡(luò)傳輸延遲的不確定性,要維護(hù)并發(fā)操作的一致性;要解決一個(gè)操作在遠(yuǎn)程節(jié)點(diǎn)執(zhí)行產(chǎn)生的效果與操作在本地執(zhí)行時(shí)產(chǎn)生的效果不一致,即與用戶希望達(dá)到的效果不一致,就是所謂的“維護(hù)操作意愿”問(wèn)題;要解決沖突檢測(cè)和處理,保證操作沖突時(shí)的一致性問(wèn)題;要解決狀態(tài)向量,優(yōu)先級(jí)規(guī)則,實(shí)現(xiàn)對(duì)操作沖突的檢測(cè)和解除問(wèn)題;要解決插入標(biāo)記和刪除標(biāo)記的操作問(wèn)題及如何按標(biāo)記類(lèi)型、標(biāo)記規(guī)則執(zhí)行等技術(shù)問(wèn)題。
      本發(fā)明解決其技術(shù)問(wèn)題所采用的技術(shù)方案是本發(fā)明的裝置由輸入設(shè)備、輸出設(shè)備、處理器等模塊及互聯(lián)網(wǎng)硬件環(huán)境等組成,其并發(fā)控制的客戶端A包括輸入設(shè)備、輸出設(shè)備、處理器及網(wǎng)絡(luò)接入設(shè)備模塊等組件構(gòu)成;其并發(fā)控制的客戶端B也包括輸入設(shè)備、輸出設(shè)備、處理器及網(wǎng)絡(luò)接入設(shè)備模塊等組件構(gòu)成;并發(fā)控制的客戶端A與客戶端B之間有互聯(lián)網(wǎng)通訊聯(lián)系。
      所述的基于標(biāo)記和狀態(tài)向量的帶沖突檢測(cè)的并發(fā)控制裝置的客戶端A和客戶端B的輸入設(shè)備的輸出端分別與輸出設(shè)備和處理器的輸入端相連接,處理器與網(wǎng)絡(luò)接入設(shè)備之間有雙向輸入、輸出線相連接,網(wǎng)絡(luò)接入設(shè)備與互聯(lián)網(wǎng)之間有雙向輸入、輸出線相連接,處理器的輸出端與輸出設(shè)備的輸入端相連接。
      所述的基于標(biāo)記和狀態(tài)向量的帶沖突檢測(cè)的并發(fā)控制裝置的輸入設(shè)備或?yàn)槭謱?xiě)輸入板或?yàn)殒I盤(pán)或?yàn)橛|摸屏等;所述的輸出設(shè)備或?yàn)轱@示器或?yàn)橥队皟x等;所述的處理器或?yàn)镻C機(jī)或?yàn)檎粕想娔XPDA等;所述的網(wǎng)絡(luò)接入設(shè)備或?yàn)榫W(wǎng)卡或?yàn)檎{(diào)制解調(diào)器等。
      一種基于標(biāo)記和狀態(tài)向量的帶沖突檢測(cè)的并發(fā)控制方法,該方法是協(xié)同編輯支持物理上分布的多個(gè)協(xié)同者同時(shí)編輯同一文檔的應(yīng)用系統(tǒng),協(xié)同編輯是典型的分布式應(yīng)用系統(tǒng),該方法為沒(méi)有服務(wù)器進(jìn)行集中控制的并發(fā)算法,并發(fā)控制是在各個(gè)客戶端實(shí)現(xiàn),在文檔標(biāo)注方法的基礎(chǔ)上引入了狀態(tài)向量,優(yōu)先級(jí)規(guī)則,實(shí)現(xiàn)對(duì)操作沖突的檢測(cè)和解除,通過(guò)文檔被插入標(biāo)記和刪除標(biāo)記的操作,并按標(biāo)記規(guī)則和優(yōu)先級(jí)規(guī)則執(zhí)行遠(yuǎn)方節(jié)點(diǎn)操作,其具體工作步驟是a)、編輯、執(zhí)行和保存客戶端A通過(guò)熟人設(shè)備編輯文檔,在本地輸出設(shè)備上立即執(zhí)行編輯效果,保存編輯操作;b)、打包、壓縮和加密然后把編輯消息發(fā)送到處理器,進(jìn)行編輯消息打包、壓縮和加密;
      c)、發(fā)送通過(guò)網(wǎng)絡(luò)接入設(shè)備把編輯數(shù)據(jù)包發(fā)送到互聯(lián)網(wǎng);d)、解包、解壓和解密客戶端B的處理器通過(guò)網(wǎng)絡(luò)接入設(shè)備收到客戶端A發(fā)來(lái)的編輯消息包,進(jìn)行解包、解壓和解密,獲得客戶端A的繪圖編輯類(lèi)型和參數(shù);e)、檢測(cè)和處理客戶端B的處理器同時(shí)根據(jù)保存在本地的編輯操列表對(duì)編輯操作進(jìn)行沖突檢測(cè)和處理,把處理后的編輯操作在輸出設(shè)備上反映出來(lái)。
      所述的基于標(biāo)記和狀態(tài)向量的帶沖突檢測(cè)的并發(fā)控制方法的工作流程軟件的具體工作步驟是步驟1.初始化本地狀態(tài)向量每個(gè)節(jié)點(diǎn)保存一個(gè)N維本地狀態(tài)向量SV,N為設(shè)定的最大節(jié)點(diǎn)數(shù),每個(gè)站點(diǎn)對(duì)應(yīng)SV中一個(gè)分量,初始時(shí)將SV各分量置為0;步驟2.本地產(chǎn)生操作信息監(jiān)聽(tīng)本地鍵盤(pán)、鼠標(biāo)消息,產(chǎn)生操作信息;步驟3.發(fā)送操作消息及操作產(chǎn)生時(shí)本地狀態(tài)向量將此時(shí)本地狀態(tài)向量,連同操作信息打包發(fā)送之;步驟4.本地操作立即執(zhí)行,更新本地狀態(tài)向量將此本地操作立即執(zhí)行,然后更新本地狀態(tài)向量SV,將SV中本地節(jié)點(diǎn)對(duì)應(yīng)向量增1,同時(shí)將該操作加入歷史操作列表HL尾部;步驟5.接收遠(yuǎn)方節(jié)點(diǎn)操作消息及伴隨狀態(tài)向量監(jiān)聽(tīng)進(jìn)程接收到遠(yuǎn)方節(jié)點(diǎn)操作消息及伴隨狀態(tài)向量;步驟6.來(lái)自同一節(jié)點(diǎn)操作必須按操作在站點(diǎn)產(chǎn)生的先后順序執(zhí)行,因此早到操作需要等待之若來(lái)自i站點(diǎn)的操作不滿足標(biāo)記就緒條件,說(shuō)明存在i站點(diǎn)上先于此操作產(chǎn)生的其他操作還沒(méi)到達(dá),此操作需等待,直至i站點(diǎn)上先于此操作產(chǎn)生的其他操作在本地已全部執(zhí)行;步驟7.判斷等待與否?如果等待,則進(jìn)入添加到操作等待列表模塊,若出現(xiàn)等待情況,則將遠(yuǎn)方節(jié)點(diǎn)操作加入操作等待列表;如果不等待,則進(jìn)入根據(jù)伴隨狀態(tài)向量和本地狀態(tài)向量判定狀態(tài)是否一致模塊,比較接收到的遠(yuǎn)方節(jié)點(diǎn)操作伴隨狀態(tài)向量和本地狀態(tài)向量是否相等;步驟8.判斷狀態(tài)一致與否?如果狀態(tài)一致,則進(jìn)入按正常方式在本地執(zhí)行遠(yuǎn)方節(jié)點(diǎn)操作模塊,則將遠(yuǎn)方節(jié)點(diǎn)操作在本地執(zhí)行之,然后將其加入本地歷史操作列表尾部;如果狀態(tài)不一致,則進(jìn)入按操作在本地執(zhí)行的先后順序向后標(biāo)記操作,并回溯狀態(tài)向量,直至狀態(tài)向量與遠(yuǎn)方節(jié)點(diǎn)操作的伴隨向量一致,則將此時(shí)本地狀態(tài)向量SV的值賦給一臨時(shí)狀態(tài)向量,自尾向頭取出歷史操作列表HL中操作項(xiàng),判斷其來(lái)源站點(diǎn)及類(lèi)型,調(diào)用標(biāo)記函數(shù)將其在文檔中做標(biāo)記,同時(shí)將臨時(shí)變量中對(duì)應(yīng)此操作的分量減1;重復(fù)上述過(guò)程,直至臨時(shí)狀態(tài)向量同傳過(guò)來(lái)的操作的伴隨狀態(tài)向量相同;步驟9.按標(biāo)記規(guī)則在本地執(zhí)行遠(yuǎn)方節(jié)點(diǎn)操作判斷是否存在操作沖突;若存在,則按優(yōu)先級(jí)原則和標(biāo)記規(guī)則執(zhí)行遠(yuǎn)方節(jié)點(diǎn),否則按標(biāo)記規(guī)則執(zhí)行遠(yuǎn)方節(jié)點(diǎn)操作;步驟10.去除所有標(biāo)記調(diào)用標(biāo)記去除函數(shù),去除所有標(biāo)記,將遠(yuǎn)方節(jié)點(diǎn)操作加入歷史操作列表HL;
      步驟11.操作等待列表是否存在滿足執(zhí)行條件的操作進(jìn)入操作等待列表是否存在滿足執(zhí)行條件的操作模塊;此次操作執(zhí)行完畢,查找操作等待列表,若此時(shí)存在與剛執(zhí)行的操作來(lái)源相同的操作滿足標(biāo)記就緒條件,則將其取出,按標(biāo)記算法執(zhí)行之;步驟12.判斷存在與否?如果存在,則進(jìn)入根據(jù)伴隨狀態(tài)向量和本地狀態(tài)向量判定狀態(tài)是否一致模塊;如果不存在,則流程結(jié)束。
      本發(fā)明的標(biāo)記規(guī)則執(zhí)行遠(yuǎn)方節(jié)點(diǎn)操作時(shí),從文檔首開(kāi)始,對(duì)于每個(gè)插入標(biāo)記,忽略其位置和內(nèi)容,同時(shí)修改遠(yuǎn)方節(jié)點(diǎn)操作參數(shù)(將位置參數(shù)增1);對(duì)于刪除標(biāo)記,視其為文檔的組成部分,遠(yuǎn)方節(jié)點(diǎn)操作參數(shù)不變。所有標(biāo)記處理完成后,按最終修改后的操作參數(shù)執(zhí)行遠(yuǎn)方節(jié)點(diǎn)操作。
      本發(fā)明的操作沖突解除的優(yōu)先級(jí)規(guī)則對(duì)于發(fā)生沖突的刪除操作,可以說(shuō)明,按標(biāo)記規(guī)則可以自動(dòng)解除操作沖突;對(duì)于發(fā)生沖突的插入操作,需按照一定策略(如按照站點(diǎn)編號(hào)大小),規(guī)定沖突操作的優(yōu)先級(jí)。在按標(biāo)記規(guī)則執(zhí)行發(fā)生沖突的插入操作時(shí),若遠(yuǎn)方節(jié)點(diǎn)操作的優(yōu)先級(jí)高于本地沖突標(biāo)記,則直接執(zhí)行此操作;否則,按標(biāo)記規(guī)則忽略該沖突標(biāo)記,若此沖突標(biāo)記的后繼也是沖突標(biāo)記,則繼續(xù)比較兩者的優(yōu)先級(jí),直至找到比遠(yuǎn)方節(jié)點(diǎn)操作優(yōu)先級(jí)低的沖突標(biāo)記,執(zhí)行遠(yuǎn)方節(jié)點(diǎn)操作。
      本發(fā)明的有益效果是本發(fā)明的算法在文檔標(biāo)注方法的基礎(chǔ)上引入了狀態(tài)向量,避免了操作上下文的傳送;引入了優(yōu)先級(jí)規(guī)則,實(shí)現(xiàn)了對(duì)操作沖突的檢測(cè)和解除,解決了沖突操作的一致性問(wèn)題;本方法易于理解,設(shè)計(jì)直觀、通用,減少了操作信息交互內(nèi)容,降低了網(wǎng)絡(luò)傳輸量,縮短了響應(yīng)時(shí)間。


      下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明進(jìn)一步說(shuō)明。
      附圖1是本發(fā)明總體結(jié)構(gòu)的硬件環(huán)境方框圖;附圖2是本發(fā)明并發(fā)控制方法的流程圖;附圖中標(biāo)號(hào)說(shuō)明1-客戶端A;2-客戶端B;3-輸入設(shè)備;4-輸出設(shè)備;5-處理器;6-網(wǎng)絡(luò)接入設(shè)備;7-互聯(lián)網(wǎng);11-初始化本地狀態(tài)向量;12-本地產(chǎn)生操作信息;13-發(fā)送操作消息及操作產(chǎn)生時(shí)本地狀態(tài)向量;14-本地操作立即執(zhí)行,更新本地狀態(tài)向量;15-接收遠(yuǎn)方節(jié)點(diǎn)操作消息及伴隨狀態(tài)向量;16-來(lái)自同一節(jié)點(diǎn)操作必須按操作在站點(diǎn)產(chǎn)生的先后順序執(zhí)行,因此早到操作需要等待;17-添加到操作等待列表;18-根據(jù)伴隨狀態(tài)向量和本地狀態(tài)向量判定狀態(tài)是否一致;19-按正常方式在本地執(zhí)行遠(yuǎn)方節(jié)點(diǎn)操作;20-直至狀態(tài)向量與遠(yuǎn)方節(jié)點(diǎn)操作的伴隨向量一致;21-按標(biāo)記規(guī)則在本地執(zhí)行遠(yuǎn)方節(jié)點(diǎn)操作;22-去除所有標(biāo)記;23-操作等待列表是否存在滿足執(zhí)行條件的操作;
      24-等待?25-狀態(tài)一致?26-存在?27-結(jié)束;具體實(shí)施方式
      請(qǐng)參閱附圖1所示,本發(fā)明的裝置由輸入設(shè)備、輸出設(shè)備、處理器等模塊及互聯(lián)網(wǎng)硬件環(huán)境等組成,其并發(fā)控制的客戶端A(1)包括輸入設(shè)備(3)、輸出設(shè)備(4)、處理器(5)及網(wǎng)絡(luò)接入設(shè)備(6)模塊等組件構(gòu)成;其并發(fā)控制的客戶端B(2)也包括輸入設(shè)備(3)、輸出設(shè)備(4)、處理器(5)及網(wǎng)絡(luò)接入設(shè)備(6)模塊等組件構(gòu)成;并發(fā)控制的客戶端A(1)與客戶端B(2)之間有互聯(lián)網(wǎng)(7)通訊聯(lián)系。
      所述的基于標(biāo)記和狀態(tài)向量的帶沖突檢測(cè)的并發(fā)控制裝置的客戶端A(1)和客戶端B(2)的輸入設(shè)備(3)的輸出端分別與輸出設(shè)備(4)和處理器(5)的輸入端相連接,處理器(5)與網(wǎng)絡(luò)接入設(shè)備(6)之間有雙向輸入、輸出線相連接,網(wǎng)絡(luò)接入設(shè)備(6)與互聯(lián)網(wǎng)(7)之間有雙向輸入、輸出線相連接,處理器(5)的輸出端與輸出設(shè)備(4)的輸入端相連接。
      所述的基于標(biāo)記和狀態(tài)向量的帶沖突檢測(cè)的并發(fā)控制裝置的輸入設(shè)備(3)或?yàn)槭謱?xiě)輸入板或?yàn)殒I盤(pán)或?yàn)橛|摸屏等;所述的輸出設(shè)備(4)或?yàn)轱@示器或?yàn)橥队皟x等;所述的處理器(5)或?yàn)镻C機(jī)或?yàn)檎粕想娔XPDA等;所述的網(wǎng)絡(luò)接入設(shè)備(6)或?yàn)榫W(wǎng)卡或?yàn)檎{(diào)制解調(diào)器等。
      一種基于標(biāo)記和狀態(tài)向量的帶沖突檢測(cè)的并發(fā)控制方法,該方法是協(xié)同編輯支持物理上分布的多個(gè)協(xié)同者同時(shí)編輯同一文檔的應(yīng)用系統(tǒng),協(xié)同編輯是典型的分布式應(yīng)用系統(tǒng),該方法為沒(méi)有服務(wù)器進(jìn)行集中控制的并發(fā)算法,并發(fā)控制是在各個(gè)客戶端實(shí)現(xiàn),在文檔標(biāo)注方法的基礎(chǔ)上引入了狀態(tài)向量,優(yōu)先級(jí)規(guī)則,實(shí)現(xiàn)對(duì)操作沖突的檢測(cè)和解除,通過(guò)文檔被插入標(biāo)記和刪除標(biāo)記的操作,并按標(biāo)記規(guī)則和優(yōu)先級(jí)規(guī)則執(zhí)行遠(yuǎn)方節(jié)點(diǎn)操作,其具體工作步驟是a)、編輯、執(zhí)行和保存客戶端A(1)通過(guò)熟人設(shè)備編輯文檔,在本地輸出設(shè)備(4)上立即執(zhí)行編輯效果,保存編輯操作;b)、打包、壓縮和加密然后把編輯消息發(fā)送到處理器(5),進(jìn)行編輯消息打包、壓縮和加密;c)、發(fā)送通過(guò)網(wǎng)絡(luò)接入設(shè)備(6)把編輯數(shù)據(jù)包發(fā)送到互聯(lián)網(wǎng)(7);d)、解包、解壓和解密客戶端B(2)的處理器(5)通過(guò)網(wǎng)絡(luò)接入設(shè)備(6)收到客戶端A(1)發(fā)來(lái)的編輯消息包,進(jìn)行解包、解壓和解密,獲得客戶端A(1)的繪圖編輯類(lèi)型和參數(shù);e)、檢測(cè)和處理客戶端B(2)的處理器(5)同時(shí)根據(jù)保存在本地的編輯操列表對(duì)編輯操作進(jìn)行沖突檢測(cè)和處理,把處理后的編輯操作在輸出設(shè)備(4)上反映出來(lái)。
      請(qǐng)參閱附圖2所示,所述的基于標(biāo)記和狀態(tài)向量的帶沖突檢測(cè)的并發(fā)控制方法的工作流程軟件的具體工作步驟是步驟1.初始化本地狀態(tài)向量(11)每個(gè)節(jié)點(diǎn)保存一個(gè)N維本地狀態(tài)向量SV。N為設(shè)定的最大節(jié)點(diǎn)數(shù),每個(gè)站點(diǎn)對(duì)應(yīng)SV中一個(gè)分量。初始時(shí)將SV各分量置為0;
      步驟2.本地產(chǎn)生操作信息(12)監(jiān)聽(tīng)本地鍵盤(pán)、鼠標(biāo)消息,產(chǎn)生操作信息;步驟3. 發(fā)送操作消息及操作產(chǎn)生時(shí)本地狀態(tài)向量(13)(伴隨狀態(tài)向量)將此時(shí)本地狀態(tài)向量,稱(chēng)之為伴隨狀態(tài)向量,連同操作信息打包發(fā)送之;步驟4.本地操作立即執(zhí)行,更新本地狀態(tài)向量(14)將此本地操作立即執(zhí)行,然后更新本地狀態(tài)向量SV,將SV中本地節(jié)點(diǎn)對(duì)應(yīng)向量增1,同時(shí)將該操作加入歷史操作列表HL尾部;步驟5.接收遠(yuǎn)方節(jié)點(diǎn)操作消息及伴隨狀態(tài)向量(15)監(jiān)聽(tīng)進(jìn)程接收到遠(yuǎn)方節(jié)點(diǎn)操作消息及伴隨狀態(tài)向量;步驟6.來(lái)自同一節(jié)點(diǎn)操作必須按操作在站點(diǎn)產(chǎn)生的先后順序執(zhí)行,因此早到操作需要等待(16)之若來(lái)自i站點(diǎn)的操作不滿足標(biāo)記就緒條件,說(shuō)明存在i站點(diǎn)上先于此操作產(chǎn)生的其他操作還沒(méi)到達(dá),此操作需等待,直至i站點(diǎn)上先于此操作產(chǎn)生的其他操作在本地已全部執(zhí)行;步驟7.判斷等待(24)與否?如果等待,則進(jìn)入添加到操作等待列表(17)模塊,即若出現(xiàn)等待情況,則將遠(yuǎn)方節(jié)點(diǎn)操作加入操作等待列表(WaitingList);如果不等待,則進(jìn)入根據(jù)伴隨狀態(tài)向量和本地狀態(tài)向量判定狀態(tài)是否一致(18)模塊,比較接收到的遠(yuǎn)方節(jié)點(diǎn)操作伴隨狀態(tài)向量和本地狀態(tài)向量是否相等;步驟8.判斷狀態(tài)一致(25)與否?如果狀態(tài)一致,則進(jìn)入按正常方式在本地執(zhí)行遠(yuǎn)方節(jié)點(diǎn)操作(19)模塊,即若相等,則將遠(yuǎn)方節(jié)點(diǎn)操作在本地執(zhí)行之,然后將其加入本地歷史操作列表尾部;如果狀態(tài)不一致,則進(jìn)入按操作在本地執(zhí)行的先后順序向后標(biāo)記操作,并回溯狀態(tài)向量,直至狀態(tài)向量與遠(yuǎn)方節(jié)點(diǎn)操作的伴隨向量一致(20),即若不相等,則將此時(shí)本地狀態(tài)向量SV的值賦給一臨時(shí)狀態(tài)向量,自尾向頭取出歷史操作列表HL中操作項(xiàng),判斷其來(lái)源站點(diǎn)及類(lèi)型,調(diào)用標(biāo)記函數(shù)將其在文檔中做標(biāo)記,同時(shí)將臨時(shí)變量中對(duì)應(yīng)此操作的分量減1;重復(fù)上述過(guò)程,直至臨時(shí)狀態(tài)向量同傳過(guò)來(lái)的操作的伴隨狀態(tài)向量相同;步驟9.按標(biāo)記規(guī)則在本地執(zhí)行遠(yuǎn)方節(jié)點(diǎn)操作(21)判斷是否存在操作沖突;若存在,則按優(yōu)先級(jí)原則和標(biāo)記規(guī)則執(zhí)行遠(yuǎn)方節(jié)點(diǎn),否則按標(biāo)記規(guī)則執(zhí)行遠(yuǎn)方節(jié)點(diǎn)操作;步驟10.去除所有標(biāo)記(22)調(diào)用標(biāo)記去除函數(shù),去除所有標(biāo)記(22),將遠(yuǎn)方節(jié)點(diǎn)操作加入歷史操作列表HL;步驟11.操作等待列表是否存在滿足執(zhí)行條件的操作(23)進(jìn)入操作等待列表是否存在滿足執(zhí)行條件的操作(23)模塊;此次操作執(zhí)行完畢,查找操作等待列表,若此時(shí)存在與剛執(zhí)行的操作來(lái)源相同的操作滿足標(biāo)記就緒條件,則將其取出,按標(biāo)記算法執(zhí)行之;步驟12.判斷存在(26)與否?如果存在,則進(jìn)入根據(jù)伴隨狀態(tài)向量和本地狀態(tài)向量判定狀態(tài)是否一致(18)模塊;如果不存在,則流程結(jié)束(27)。
      本發(fā)明專(zhuān)利的具體實(shí)施例在使用工作過(guò)程中還需作如下說(shuō)明1)、標(biāo)記類(lèi)型說(shuō)明文檔被標(biāo)記部分有兩種類(lèi)型(1)插入標(biāo)記對(duì)于遠(yuǎn)方節(jié)點(diǎn)操作而言,這部分內(nèi)容應(yīng)該是不可見(jiàn)的,以屏蔽插入操作的影響;(2)刪除標(biāo)記對(duì)于遠(yuǎn)方節(jié)點(diǎn)操作而言,這部分內(nèi)容應(yīng)該是可見(jiàn)的,以屏蔽刪除操作的影響。
      2)、標(biāo)記就緒定義設(shè)遠(yuǎn)方節(jié)點(diǎn)操作來(lái)自i站點(diǎn),當(dāng)操作伴隨向量中RSV(i)比本地狀態(tài)向量LSV(i)大1,稱(chēng)該操作為標(biāo)記就緒。
      3)、標(biāo)記規(guī)則執(zhí)行遠(yuǎn)方節(jié)點(diǎn)操作時(shí),從文檔首開(kāi)始,對(duì)于每個(gè)插入標(biāo)記,忽略其位置和內(nèi)容,同時(shí)修改遠(yuǎn)方節(jié)點(diǎn)操作參數(shù)(將位置參數(shù)增1);對(duì)于刪除標(biāo)記,視其為文檔的組成部分,遠(yuǎn)方節(jié)點(diǎn)操作參數(shù)不變。所有標(biāo)記處理完成后,按最終修改后的操作參數(shù)執(zhí)行遠(yuǎn)方節(jié)點(diǎn)操作。
      4)、操作沖突定義若存在兩個(gè)或兩個(gè)以上節(jié)點(diǎn)在當(dāng)前文檔內(nèi)容一致(本地SV相同)的情況下,對(duì)同一位置都進(jìn)行插入操作或都進(jìn)行刪除操作,則稱(chēng)為操作沖突。
      5)、操作沖突解除的優(yōu)先級(jí)規(guī)則對(duì)于發(fā)生沖突的刪除操作,可以說(shuō)明,按標(biāo)記規(guī)則可以自動(dòng)解除操作沖突;對(duì)于發(fā)生沖突的插入操作,需按照一定策略(如按照站點(diǎn)編號(hào)大小),規(guī)定沖突操作的優(yōu)先級(jí)。在按標(biāo)記規(guī)則執(zhí)行發(fā)生沖突的插入操作時(shí),若遠(yuǎn)方節(jié)點(diǎn)操作的優(yōu)先級(jí)高于本地沖突標(biāo)記,則直接執(zhí)行此操作;否則,按標(biāo)記規(guī)則忽略該沖突標(biāo)記,若此沖突標(biāo)記的后繼也是沖突標(biāo)記,則繼續(xù)比較兩者的優(yōu)先級(jí),直至找到比遠(yuǎn)方節(jié)點(diǎn)操作優(yōu)先級(jí)低的沖突標(biāo)記,執(zhí)行遠(yuǎn)方節(jié)點(diǎn)操作。
      權(quán)利要求
      1.一種基于標(biāo)記和狀態(tài)向量的帶沖突檢測(cè)的并發(fā)控制裝置,該裝置有輸入設(shè)備、輸出設(shè)備、處理器及互聯(lián)網(wǎng)硬件環(huán)境,其特征在于并發(fā)控制的客戶端A(1)包括輸入設(shè)備(3)、輸出設(shè)備(4)、處理器(5)及網(wǎng)絡(luò)接入設(shè)備(6)模塊組件構(gòu)成;并發(fā)控制的客戶端B(2)包括輸入設(shè)備(3)、輸出設(shè)備(4)、處理器(5)及網(wǎng)絡(luò)接入設(shè)備(6)模塊組件構(gòu)成;并發(fā)控制的客戶端A(1)與客戶端B(2)之間有互聯(lián)網(wǎng)(7)通訊聯(lián)系。
      2.根據(jù)權(quán)利要求1所述的基于標(biāo)記和狀態(tài)向量的帶沖突檢測(cè)的并發(fā)控制裝置,其特征在于所述的客戶端A(1)和客戶端B(2)的輸入設(shè)備(3)的輸出端分別與輸出設(shè)備(4)和處理器(5)的輸入端相連接,處理器(5)與網(wǎng)絡(luò)接入設(shè)備(6)之間有雙向輸入、輸出線相連接,網(wǎng)絡(luò)接入設(shè)備(6)與互聯(lián)網(wǎng)(7)之間有雙向輸入、輸出線相連接,處理器(5)的輸出端與輸出設(shè)備(4)的輸入端相連接。
      3.根據(jù)權(quán)利要求1所述的基于標(biāo)記和狀態(tài)向量的帶沖突檢測(cè)的并發(fā)控制裝置,其特征在于所述的輸入設(shè)備(3)或?yàn)槭謱?xiě)輸入板或?yàn)殒I盤(pán)或?yàn)橛|摸屏;所述的輸出設(shè)備(4)或?yàn)轱@示器或?yàn)橥队皟x;所述的處理器(5)或?yàn)镻C機(jī)或?yàn)檎粕想娔XPDA;所述的網(wǎng)絡(luò)接入設(shè)備(6)或?yàn)榫W(wǎng)卡或?yàn)檎{(diào)制解調(diào)器。
      4.一種基于標(biāo)記和狀態(tài)向量的帶沖突檢測(cè)的并發(fā)控制方法,該方法是協(xié)同編輯支持物理上分布的多個(gè)協(xié)同者同時(shí)編輯同一文檔的應(yīng)用系統(tǒng),其特征在于該方法為沒(méi)有服務(wù)器進(jìn)行集中控制的并發(fā)算法,在文檔標(biāo)注方法的基礎(chǔ)上引入了狀態(tài)向量,優(yōu)先級(jí)規(guī)則,實(shí)現(xiàn)對(duì)操作沖突的檢測(cè)和解除,通過(guò)文檔被插入標(biāo)記和刪除標(biāo)記的操作,并按標(biāo)記規(guī)則和優(yōu)先級(jí)規(guī)則執(zhí)行遠(yuǎn)方節(jié)點(diǎn)操作,其具體工作步驟是a)、編輯、執(zhí)行和保存客戶端A(1)通過(guò)熟人設(shè)備編輯文檔,在本地輸出設(shè)備(4)上立即執(zhí)行編輯效果,保存編輯操作;b)、打包、壓縮和加密然后把編輯消息發(fā)送到處理器(5),進(jìn)行編輯消息打包、壓縮和加密;c)、發(fā)送通過(guò)網(wǎng)絡(luò)接入設(shè)備(6)把編輯數(shù)據(jù)包發(fā)送到互聯(lián)網(wǎng)(7);d)、解包、解壓和解密客戶端B(2)的處理器(5)通過(guò)網(wǎng)絡(luò)接入設(shè)備(6)收到客戶端A(1)發(fā)來(lái)的編輯消息包,進(jìn)行解包、解壓和解密,獲得客戶端A(1)的繪圖編輯類(lèi)型和參數(shù);e)、檢測(cè)和處理客戶端B(2)的處理器(5)同時(shí)根據(jù)保存在本地的編輯操列表對(duì)編輯操作進(jìn)行沖突檢測(cè)和處理,把處理后的編輯操作在輸出設(shè)備(4)上反映出來(lái)。
      5.根據(jù)權(quán)利要求4所述的基于標(biāo)記和狀態(tài)向量的帶沖突檢測(cè)的并發(fā)控制方法,其特征在于所述方法的工作流程軟件的具體工作步驟是步驟1.初始化本地狀態(tài)向量(11)每個(gè)節(jié)點(diǎn)保存一個(gè)N維本地狀態(tài)向量SV,N為設(shè)定的最大節(jié)點(diǎn)數(shù),每個(gè)站點(diǎn)對(duì)應(yīng)SV中一個(gè)分量,初始時(shí)將SV各分量置為0;步驟2.本地產(chǎn)生操作信息(12)監(jiān)聽(tīng)本地鍵盤(pán)、鼠標(biāo)消息,產(chǎn)生操作信息;步驟3.發(fā)送操作消息及操作產(chǎn)生時(shí)本地狀態(tài)向量(13)將此時(shí)本地狀態(tài)向量,連同操作信息打包發(fā)送之;步驟4.本地操作立即執(zhí)行,更新本地狀態(tài)向量(14)將此本地操作立即執(zhí)行,然后更新本地狀態(tài)向量SV,將SV中本地節(jié)點(diǎn)對(duì)應(yīng)向量增1,同時(shí)將該操作加入歷史操作列表HL尾部;步驟5.接收遠(yuǎn)方節(jié)點(diǎn)操作消息及伴隨狀態(tài)向量(15)監(jiān)聽(tīng)進(jìn)程接收到遠(yuǎn)方節(jié)點(diǎn)操作消息及伴隨狀態(tài)向量;步驟6.來(lái)自同一節(jié)點(diǎn)操作必須按操作在站點(diǎn)產(chǎn)生的先后順序執(zhí)行,因此早到操作需要等待(16)若來(lái)自i站點(diǎn)的操作不滿足標(biāo)記就緒條件,說(shuō)明存在i站點(diǎn)上先于此操作產(chǎn)生的其他操作還沒(méi)到達(dá),此操作需等待,直至i站點(diǎn)上先于此操作產(chǎn)生的其他操作在本地已全部執(zhí)行;步驟7.判斷等待(24)與否?如果等待,則進(jìn)入添加到操作等待列表(17)模塊,若出現(xiàn)等待情況,則將遠(yuǎn)方節(jié)點(diǎn)操作加入操作等待列表;如果不等待,則進(jìn)入根據(jù)伴隨狀態(tài)向量和本地狀態(tài)向量判定狀態(tài)是否一致(18)模塊,比較接收到的遠(yuǎn)方節(jié)點(diǎn)操作伴隨狀態(tài)向量和本地狀態(tài)向量是否相等;步驟8.判斷狀態(tài)一致(25)與否?如果狀態(tài)一致,則進(jìn)入按正常方式在本地執(zhí)行遠(yuǎn)方節(jié)點(diǎn)操作(19)模塊,則將遠(yuǎn)方節(jié)點(diǎn)操作在本地執(zhí)行之,然后將其加入本地歷史操作列表尾部;如果狀態(tài)不一致,則進(jìn)入按操作在本地執(zhí)行的先后順序向后標(biāo)記操作,并回溯狀態(tài)向量,直至狀態(tài)向量與遠(yuǎn)方節(jié)點(diǎn)操作的伴隨向量一致(20),則將此時(shí)本地狀態(tài)向量SV的值賦給一臨時(shí)狀態(tài)向量,自尾向頭取出歷史操作列表HL中操作項(xiàng),判斷其來(lái)源站點(diǎn)及類(lèi)型,調(diào)用標(biāo)記函數(shù)將其在文檔中做標(biāo)記,同時(shí)將臨時(shí)變量中對(duì)應(yīng)此操作的分量減1;重復(fù)上述過(guò)程,直至臨時(shí)狀態(tài)向量同傳過(guò)來(lái)的操作的伴隨狀態(tài)向量相同;步驟9.按標(biāo)記規(guī)則在本地執(zhí)行遠(yuǎn)方節(jié)點(diǎn)操作(21)判斷是否存在操作沖突;若存在,則按優(yōu)先級(jí)原則和標(biāo)記規(guī)則執(zhí)行遠(yuǎn)方節(jié)點(diǎn),否則按標(biāo)記規(guī)則執(zhí)行遠(yuǎn)方節(jié)點(diǎn)操作;步驟10.去除所有標(biāo)記(22)調(diào)用標(biāo)記去除函數(shù),去除所有標(biāo)記,將遠(yuǎn)方節(jié)點(diǎn)操作加入歷史操作列表HL;步驟11.操作等待列表是否存在滿足執(zhí)行條件的操作(23)進(jìn)入操作等待列表是否存在滿足執(zhí)行條件的操作(23)模塊;此次操作執(zhí)行完畢,查找操作等待列表,若此時(shí)存在與剛執(zhí)行的操作來(lái)源相同的操作滿足標(biāo)記就緒條件,則將其取出,按標(biāo)記算法執(zhí)行之;步驟12.判斷存在(26)與否?如果存在,則進(jìn)入根據(jù)伴隨狀態(tài)向量和本地狀態(tài)向量判定狀態(tài)是否一致(18)模塊;如果不存在,則流程結(jié)束(27)。
      全文摘要
      一種涉及計(jì)算機(jī)支持的協(xié)同工作(CSCW)技術(shù)領(lǐng)域的方法,尤指一種用于協(xié)同編輯支持物理上分布的多個(gè)協(xié)同者同時(shí)編輯同一文檔的應(yīng)用系統(tǒng),用于保證操作沖突時(shí)一致性的基于標(biāo)記和狀態(tài)向量的帶沖突檢測(cè)的并發(fā)控制方法。本發(fā)明的裝置由輸入設(shè)備、輸出設(shè)備、處理器等模塊及互聯(lián)網(wǎng)硬件環(huán)境等組成,本方法解決了沖突操作的一致性問(wèn)題,為沒(méi)有服務(wù)器進(jìn)行集中控制的并發(fā)算法,實(shí)現(xiàn)對(duì)操作沖突的檢測(cè)和解除,按標(biāo)記規(guī)則和優(yōu)先級(jí)規(guī)則執(zhí)行遠(yuǎn)方節(jié)點(diǎn)操作等。本發(fā)明的優(yōu)點(diǎn)本發(fā)明引入了狀態(tài)向量,避免了操作上下文的傳送;引入了優(yōu)先級(jí)規(guī)則,實(shí)現(xiàn)了對(duì)操作沖突的檢測(cè)和解除,該方法減少了操作信息交互內(nèi)容,降低了網(wǎng)絡(luò)傳輸量,縮短了響應(yīng)時(shí)間。
      文檔編號(hào)H04L12/18GK1674524SQ20051002397
      公開(kāi)日2005年9月28日 申請(qǐng)日期2005年2月21日 優(yōu)先權(quán)日2005年2月21日
      發(fā)明者顧君忠, 呂釗, 崔修濤, 郭忠軍, 何莉, 李卓輝 申請(qǐng)人:華東師范大學(xué)
      網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1