本申請涉及互聯(lián)網(wǎng)技術領域,尤其涉及一種通信方法、數(shù)據(jù)處理方法和計算系統(tǒng)。
背景技術:
在典型的終端-服務器交互環(huán)境下,兩者一般通過網(wǎng)絡建立通信。例如,終端用戶需要對由服務器渲染的三維立體模型進行互動操作。用戶希望可以看到自己與三維模型的互動,或對三維模型的修改能夠實時地在終端的人機界面上呈現(xiàn)出來,以提高相關應用的實效性。
例如,考慮一個三維場景中控制變換視角鏡頭的例子,終端用戶通過終端的人機界面輸入工具對三維模型進行旋轉。在用戶對終端人機界面進行操作的過程中,會生成幾百個操作事件,每個事件對應著一個新的鏡頭視角。每個新的鏡頭視角的數(shù)據(jù)信息,譬如鏡頭的X,Y,Z軸位置信息,將被封裝成一個通信包發(fā)送到服務器端,進而要求服務器端針對這個新的鏡頭視角數(shù)據(jù)生成相對應的畫面。
參照終端處理器的時鐘頻率,用戶在人機界面上的操作每秒鐘可以生成超過一百個事件。根據(jù)經(jīng)驗,如果假設服務器渲染一幀圖像需要花費的時間是16毫秒,假設終端將一秒鐘內人機界面操作所產(chǎn)生的100個事件都發(fā)送到服務器端,則服務器端需要花費總共1.6秒(16ms*100)來渲染對應一秒鐘內人機界面上操作所要求生成的畫面。如此,終端上1秒鐘的界面操作需要服務器端1.6秒的圖像渲染,顯而易見這將造成終端與服務器之間的無法同步。
通常解決上述問題的辦法是基于確認機制,終端等待服務器端發(fā)來確認,表示對應之前事件請求的圖像已經(jīng)渲染完成,可以接收下一個事件,在確認收到之前,終端停止發(fā)送新的事件請求。這個方法的缺陷在于終端獲得的畫面幀數(shù)率將直接受限于它與服務器之間的距離,終端距離服務器越遠,通信包傳輸?shù)臅r間越長,直接導致通信反饋的停頓,使終端顯示的幀數(shù)率明顯下降。
技術實現(xiàn)要素:
本申請實施例提供一種通信方法、數(shù)據(jù)處理方法和計算系統(tǒng),用以解決現(xiàn)有技術中終端與服務器之間無法同步或通信反饋有停頓或延時的問題。
本申請實施例提供的一種通信方法,包括:
接收第一數(shù)據(jù)包,所述第一數(shù)據(jù)包包括類別標簽、優(yōu)先級標簽和數(shù)據(jù)信息;
判斷通信堆棧中是否存在與所述第一數(shù)據(jù)包的類別標簽相同且未鎖定的第二數(shù)據(jù)包,如果是,則根據(jù)所述第一數(shù)據(jù)包與所述第二數(shù)據(jù)包的優(yōu)先級標簽,比較所述第一數(shù)據(jù)包與所述第二數(shù)據(jù)包的優(yōu)先級;
若所述第一數(shù)據(jù)包的優(yōu)先級小于等于所述第二數(shù)據(jù)包的優(yōu)先級,則將所述第一數(shù)據(jù)包的優(yōu)先級標簽替換為所述第二數(shù)據(jù)包的優(yōu)先級標簽,并用所述替換優(yōu)先級標簽后的第一數(shù)據(jù)包覆蓋所述第二數(shù)據(jù)包;
若所述第一數(shù)據(jù)包的優(yōu)先級大于所述第二數(shù)據(jù)包的優(yōu)先級,則刪除所述第二數(shù)據(jù)包,并將所述第一數(shù)據(jù)包推入所述通信堆棧中首個優(yōu)先級不低于其的數(shù)據(jù)包之后。
本申請實施例提供的一種數(shù)據(jù)處理方法,包括:
接收第一數(shù)據(jù)包,所述第一數(shù)據(jù)包包括類別標簽、優(yōu)先級標簽和數(shù)據(jù)信息;
判斷通信堆棧中是否存在與所述第一數(shù)據(jù)包的類別標簽相同且未鎖定的第二數(shù)據(jù)包,如果是,則根據(jù)所述第一數(shù)據(jù)包與所述第二數(shù)據(jù)包的優(yōu)先級標簽,比較所述第一數(shù)據(jù)包與所述第二數(shù)據(jù)包的優(yōu)先級;
若所述第一數(shù)據(jù)包的優(yōu)先級小于等于所述第二數(shù)據(jù)包的優(yōu)先級,則將所述第一數(shù)據(jù)包的優(yōu)先級標簽替換為所述第二數(shù)據(jù)包的優(yōu)先級標簽,并用所述替換優(yōu)先級標簽后的第一數(shù)據(jù)包覆蓋所述第二數(shù)據(jù)包;
若所述第一數(shù)據(jù)包的優(yōu)先級大于所述第二數(shù)據(jù)包的優(yōu)先級,則刪除所述第二數(shù)據(jù)包,并將所述第一數(shù)據(jù)包推入所述通信堆棧中首個優(yōu)先級不低于其的數(shù)據(jù)包之后;
在所述第一數(shù)據(jù)包到達所述通信堆棧的底部時對其進行數(shù)據(jù)處理。
本申請實施例提供的一種計算系統(tǒng),包括:
數(shù)據(jù)包接收模塊,用于接收第一數(shù)據(jù)包,所述第一數(shù)據(jù)包包括類別標簽、優(yōu)先級標簽和數(shù)據(jù)信息;
類別匹配模塊,用于判斷通信堆棧中是否存在與所述第一數(shù)據(jù)包的類別標簽相同且未鎖定的第二數(shù)據(jù)包,如果是,則通過優(yōu)先級判定模塊根據(jù)所述第一數(shù)據(jù)包與所述第二數(shù)據(jù)包的優(yōu)先級標簽,比較所述第一數(shù)據(jù)包與所述第二數(shù)據(jù)包的優(yōu)先級;
若所述第一數(shù)據(jù)包的優(yōu)先級小于等于所述第二數(shù)據(jù)包的優(yōu)先級,則將所述第一數(shù)據(jù)包的優(yōu)先級標簽替換為所述第二數(shù)據(jù)包的優(yōu)先級標簽,并通過隊列模塊用所述替換優(yōu)先級標簽后的第一數(shù)據(jù)包覆蓋所述第二數(shù)據(jù)包;
若所述第一數(shù)據(jù)包的優(yōu)先級大于所述第二數(shù)據(jù)包的優(yōu)先級,則刪除所述第二數(shù)據(jù)包,并通過隊列模塊將所述第一數(shù)據(jù)包推入所述通信堆棧中首個優(yōu)先級不低于其的數(shù)據(jù)包之后。
本申請實施例提供的一種計算系統(tǒng),包括:
數(shù)據(jù)包接收模塊,用于接收第一數(shù)據(jù)包,所述第一數(shù)據(jù)包包括類別標簽、優(yōu)先級標簽和數(shù)據(jù)信息;
類別匹配模塊,用于判斷通信堆棧中是否存在與所述第一數(shù)據(jù)包的類別標簽相同且未鎖定的第二數(shù)據(jù)包,如果是,則通過優(yōu)先級判定模塊根據(jù)所述第一數(shù)據(jù)包與所述第二數(shù)據(jù)包的優(yōu)先級標簽,比較所述第一數(shù)據(jù)包與所述第二數(shù)據(jù)包的優(yōu)先級;
若所述第一數(shù)據(jù)包的優(yōu)先級小于等于所述第二數(shù)據(jù)包的優(yōu)先級,則通過數(shù)據(jù)包替換模塊將所述第一數(shù)據(jù)包的優(yōu)先級標簽替換為所述第二數(shù)據(jù)包的優(yōu)先級標簽,并用所述替換優(yōu)先級標簽后的第一數(shù)據(jù)包覆蓋所述第二數(shù)據(jù)包;
若所述第一數(shù)據(jù)包的優(yōu)先級大于所述第二數(shù)據(jù)包的優(yōu)先級,則通過隊列模塊刪除所述第二數(shù)據(jù)包,并將所述第一數(shù)據(jù)包推入所述通信堆棧中首個優(yōu)先級不低于其的數(shù)據(jù)包之后;
堆棧處理模塊,用于在所述第一數(shù)據(jù)包到達所述通信堆棧的底部時對其進行數(shù)據(jù)處理。
本申請實施例提供一種通信方法、數(shù)據(jù)處理方法和計算系統(tǒng),該方法通過布置通信堆棧和在數(shù)據(jù)包生成時加入類別標簽和優(yōu)先級標簽,數(shù)據(jù)包在推入通信堆棧前,會首先查找是否有與其類別標簽相同的未鎖定數(shù)據(jù)包,如果是,則會進一步根據(jù)其優(yōu)先級判斷其推入堆棧中的位置,并將通信堆棧中與其類別標簽相同的數(shù)據(jù)包刪除,保證通信堆棧中待處理的數(shù)據(jù)包都是最新的,避免發(fā)送過期的數(shù)據(jù)包帶來的資源浪費。
附圖說明
此處所說明的附圖用來提供對本申請的進一步理解,構成本申請的一部分,本申請的示意性實施例及其說明用于解釋本申請,并不構成對本申請的不當限定。在附圖中:
圖1為本申請一實施例網(wǎng)絡環(huán)境中遠程訪問三維影像資源的系統(tǒng)架構圖;
圖2為本申請一實施例通信網(wǎng)絡戰(zhàn)具備運算能力的設備內部架構圖;
圖3為本申請一實施例提供的通信方法的流程圖;
圖4為本申請一實施例終端設備通過網(wǎng)絡對服務器上資源進行交互式訪問的系統(tǒng)架構圖;
圖5為本申請一實施例提供的數(shù)據(jù)包的模塊示意圖;
圖6a至6m為本申請各實施例提供的通信方法的處理流程架構圖;
圖7為本申請一實施例提供的通信方法的流程圖;
圖8為本申請一實施例提供的通信處理方法的系統(tǒng)架構圖;
圖9為本申請一實施例提供的數(shù)據(jù)處理方法的流程圖;
圖10為本申請一實施例提供的計算系統(tǒng)的模塊圖;
圖11為本申請一實施例提供的計算系統(tǒng)的模塊圖。
具體實施方式
為使本申請的目的、技術方案和優(yōu)點更加清楚,下面將結合本申請具體實施例及相應的附圖對本申請技術方案進行清楚、完整地描述。顯然,所描述的實施例僅是本申請一部分實施例,而不是全部的實施例?;诒旧暾堉械膶嵤├绢I域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本申請保護的范圍。
在一個典型的應用場景中,以下實施例所披露的技術可以更為高效地通過網(wǎng)絡實時訪問遠程渲染生產(chǎn)的三維影像資源,并提供實時高效的與這些三維影像資源進行互動操作的功能。
以下實施例所披露的通信堆棧中,數(shù)據(jù)包的處理順序采用FIFO(先進先出)的原則,并始終從堆棧底部開始逐一處理數(shù)據(jù)包。
參圖1,本申請通信方法實施例的一應用場景,為通過網(wǎng)絡遠程渲染三維影像的通信系統(tǒng)100。服務器101(例如三維影像數(shù)據(jù))通過網(wǎng)絡104與N個終端設備1061、1062、…、106N相連,這些終端設備可分別被用戶1081、1082、…、108N訪問或使用。這些用戶1081、1082、…、108N可以通過終端設備1061、1062、…、106N上的人機界面瀏覽或使用遠程服務器端的網(wǎng)絡可訪問資源102。終端設備1061、1062、…、106N包括各種擁有獨立計算處理能力的設備,諸如桌面?zhèn)€人電腦,筆記本電腦,平板電腦,智能手機,機頂盒,游戲機,輕客戶端等等類似設備。盡管在本文中主要使用了分布式系統(tǒng)來描述本方法運作的外部環(huán)境,這里所描述的主要模塊和技術也可以應用于完全獨立的沒有網(wǎng)絡連接的單處理機本地環(huán)境,在這樣的環(huán)境中,本文描述的網(wǎng)絡可訪問資源102就未必會在物理上遠離系統(tǒng)中的其他系統(tǒng)模塊。
參圖2,在一個典型的終端設備106中,可以按照功能劃分為模塊化架構200。終端設備106可以包含一個或多個處理模塊2011、…、201N和存儲模塊202。存儲模塊202可以包含非永久性或永久性存儲器,采用任何信息存儲技術實現(xiàn)的固定和可移動存儲器,例如計算指令,數(shù)據(jù)結構,程序模塊或其他數(shù)據(jù)。這類存儲器包含但不局限于,隨機存取存儲器RAM,只讀存儲器ROM,帶電可擦寫只讀存儲器EEPROM,閃存或其他存儲技術,CD-ROM,DVD或其他光學存儲,磁帶,磁卡等磁性存儲設備,RAID磁盤陣列存儲系統(tǒng),或任何其他可以存儲信息數(shù)據(jù)并被計算機系統(tǒng)讀取的媒介。
存儲模塊202可以包含一個操作系統(tǒng)205用于管理終端設備106和多個應用程序206,包括網(wǎng)頁瀏覽器可以使用的硬件和軟件資源。終端設備106可以配備了一個或多個顯示模塊203用于顯示三維模型影像。在某些實施例中,應用程序206可以提供一個人機界面給用戶,用以對三維模型,或者其他二維,三維圖像進行瀏覽和互動操作。該應用程序206可包含一個網(wǎng)頁瀏覽器,內嵌可以處理標記語言文件的程序模塊,并可提供通過網(wǎng)絡104訪問,接收,發(fā)送信息等類似操作。終端設備106可包含其他輸入輸出模塊204,例如鍵盤,鼠標,擴音器等。
存儲模塊202可以存儲程序指令。程序指令或模塊包含規(guī)則,程序,對象,部件,以及用以完成特殊任務或實現(xiàn)特定的抽象數(shù)據(jù)類型。這里涉及的程序可包含一個從網(wǎng)絡104接收數(shù)據(jù)的數(shù)據(jù)包接收模塊223,一個查找匹配數(shù)據(jù)包類別標簽的類別匹配模塊225,一個用于替代,覆蓋或替換數(shù)據(jù)包的數(shù)據(jù)包替換模塊227,一個對堆棧底部數(shù)據(jù)包逐一處理的堆棧處理模塊220,一個通過網(wǎng)絡104發(fā)送數(shù)據(jù)包處理結果的傳輸模塊222,一個將數(shù)據(jù)包依次推入堆棧的隊列模塊226,一個根據(jù)終端用戶的輸入或指令生成數(shù)據(jù)包的生成模塊228,一個根據(jù)數(shù)據(jù)包優(yōu)先級判斷插入堆棧位置的優(yōu)先級模塊230。
需要說明的是,本申請的通信方法可以是被應用于上述示出架構的服務器端和/或終端設備上。以下將首先以該通信方法被應用于服務器端為例,示范性地對本申請的技術方案進行闡述。
參圖3,介紹本申請通信方法的一實施例。在本實施例中,該方法包括以下步驟:
S11、接收第一數(shù)據(jù)包,所述第一數(shù)據(jù)包包括類別標簽、優(yōu)先級標簽和數(shù)據(jù)信息。
數(shù)據(jù)信息根據(jù)用戶的輸入或指令生成。如圖4所示,用戶108通過人機操作對資源發(fā)生調用請求,終端設備106進而發(fā)送一個新的數(shù)據(jù)包流301到服務器101。
如圖5所示,數(shù)據(jù)包400中封裝有類別標簽402、優(yōu)先級標簽403和數(shù)據(jù)信息404。數(shù)據(jù)信息404至少包括靜止圖像和動畫的其中之一,數(shù)據(jù)標簽402指示的對應的數(shù)據(jù)信息的類型包括:一幀靜態(tài)圖像、一段動畫、一個鏡頭位置、一個鏡頭焦點、一個鏡頭矢量、一個鏡頭縮放等級、一個鏡頭縮放模式、一個鏡頭視野、一個鏡頭剪切面、一個鏡頭移動時間、一個鏡頭觸發(fā)器、一個鏡頭分辨率、一個鏡頭畫質、一個高斯濾波器、一個三維查找表、一個柱狀圖、一個模型沿某個軸向的切片、一個視圖刷新指令、一個改變視場或層級指令,包含視場或層級設定參數(shù)數(shù)據(jù)、一個添加標注指令,包含標注的坐標信息、一個漫反射光設定、一個環(huán)境光線設定、一個高光設定、一個特定鏡頭位置下的視場書簽,包含特定時間點的三維查找表、一個模型剪切指令,包含剪切工具的切口形狀信息、一個網(wǎng)格導出指令、一個視頻生成指令,包含鏡頭運動路徑或其他改變三維模型形態(tài)位置的操作信息。
S12、判斷通信堆棧中是否存在與所述第一數(shù)據(jù)包的類別標簽相同且未鎖定的第二數(shù)據(jù)包,如果是,則根據(jù)所述第一數(shù)據(jù)包與所述第二數(shù)據(jù)包的優(yōu)先級標簽,比較所述第一數(shù)據(jù)包與所述第二數(shù)據(jù)包的優(yōu)先級。
服務器101中包括一個通信堆棧302,通信堆棧302已經(jīng)推入數(shù)據(jù)包310、…、314。在一實施例中,該方法還包括將通信堆棧302底部正被處理的數(shù)據(jù)包310鎖定,被鎖定的數(shù)據(jù)包310具有最高優(yōu)先級。
正在被服務器101處理的數(shù)據(jù)包將被鎖定,處理結束后,該數(shù)據(jù)包被解鎖,并銷毀。然后堆棧中下一個數(shù)據(jù)包被處理,如此循環(huán)。系統(tǒng)可以支持多個數(shù)據(jù)包可以被同時鎖定的情況,不影響整體正常運行。以下關于數(shù)據(jù)包鎖定的技術細節(jié)描述同樣也適用于多發(fā)數(shù)據(jù)包鎖定的情況。
在本申請數(shù)據(jù)處理方法提供的實施例中,這里的數(shù)據(jù)包310可以通過發(fā)送處理指令304被傳到處理器303進行數(shù)據(jù)處理,該處理器303可以例如為渲染引擎。
S13、若所述第一數(shù)據(jù)包的優(yōu)先級小于等于所述第二數(shù)據(jù)包的優(yōu)先級,則將所述第一數(shù)據(jù)包的優(yōu)先級標簽替換為所述第二數(shù)據(jù)包的優(yōu)先級標簽,并用所述替換優(yōu)先級標簽后的第一數(shù)據(jù)包覆蓋所述第二數(shù)據(jù)包。
S14、若所述第一數(shù)據(jù)包的優(yōu)先級大于所述第二數(shù)據(jù)包的優(yōu)先級,則刪除所述第二數(shù)據(jù)包,并將所述第一數(shù)據(jù)包推入所述通信堆棧中首個優(yōu)先級不低于其的數(shù)據(jù)包之后。
在本實施例中,若所述通信堆棧中不存在與所述第一數(shù)據(jù)包的類別標簽相同且未鎖定的第二數(shù)據(jù)包,則將所述第一數(shù)據(jù)包推入所述通信堆棧中首個優(yōu)先級不低于其的數(shù)據(jù)包之后。
以下給出一些具體的實施例,對本申請的上述步驟進行更好的說明。其中,優(yōu)先級標簽用于表示數(shù)據(jù)包的請求處理的優(yōu)先級,示范性地,優(yōu)先級可以包括:0=最高(正在被處理,被鎖定中),1=較高,2=高,3=中等,4=較低,5=最低,當然在實際的應用中,所述的優(yōu)先級標簽包括的優(yōu)先級等級定義可以不僅包括于此,可以根據(jù)實際的需要進行優(yōu)先級等級的劃分。
圖6a中,帶有一個表示鏡頭位置類別標簽的數(shù)據(jù)包502到達堆棧500。堆棧500是空的,因此數(shù)據(jù)包502被直接推入堆棧,被鎖定,優(yōu)先級變?yōu)?。
圖6b中,第二個數(shù)據(jù)包504到達堆棧500,它帶有鏡頭位置的類別標簽。堆棧500開始查找匹配堆棧隊列中跟數(shù)據(jù)包504擁有同樣類別標簽的數(shù)據(jù)包。數(shù)據(jù)包502擁有與數(shù)據(jù)包504同樣的標簽,但是因為它已經(jīng)被鎖定,數(shù)據(jù)包502將不會被替換掉。因此,數(shù)據(jù)包504被推入堆棧500的頂部。
實施例一
圖6c中,第三個數(shù)據(jù)包506到達堆棧500,它帶有表示分辨率的類別標簽,堆棧500開始查找匹配堆棧隊列中跟數(shù)據(jù)包506擁有同樣類別標簽的數(shù)據(jù)包。盡管堆棧隊列中已經(jīng)包含數(shù)據(jù)包502,504,但是他們的類別標簽與新數(shù)據(jù)包不一致,所以數(shù)據(jù)包506被推入堆棧頂部。
圖6d中,第四個數(shù)據(jù)包508到達堆棧500,它帶有鏡頭位置的類別標簽,當堆棧500開始查找匹配通信堆棧隊列中跟數(shù)據(jù)包508擁有同樣類別標簽的數(shù)據(jù)包時,數(shù)據(jù)包502,504匹配查找條件,數(shù)據(jù)包502由于仍然被鎖定,它不會被替換。數(shù)據(jù)包504因為擁有和新數(shù)據(jù)包508一樣的類別標簽,它將被替換覆蓋。
圖6e,6f中,數(shù)據(jù)包504被新數(shù)據(jù)包508所替換。數(shù)據(jù)包504被銷毀,數(shù)據(jù)包508取代了數(shù)據(jù)包504在堆棧500中的位置,數(shù)據(jù)包508包沒有被推入堆棧的頂部,或是加入到堆棧中任何其他位置。
實施例二
圖6g中,第三個數(shù)據(jù)包506到達堆棧500,它帶有表示分辨率的類別標簽,優(yōu)先級為2,堆棧500開始查找匹配堆棧隊列中跟數(shù)據(jù)包506擁有同樣類別標簽的數(shù)據(jù)包。盡管堆棧隊列中已經(jīng)包含未鎖定的數(shù)據(jù)包502,504,但是他們的類別標簽與新數(shù)據(jù)包不一致。通過優(yōu)先級查找,比對出數(shù)據(jù)包504的優(yōu)先級為3,低于數(shù)據(jù)包506,而數(shù)據(jù)包502的優(yōu)先級為0,高于數(shù)據(jù)包506,而且被鎖定,所以數(shù)據(jù)包506被推入到堆棧500中數(shù)據(jù)包504和數(shù)據(jù)包502之間的位置。
實施例三
圖6h中,第四個數(shù)據(jù)包508到達堆棧500,它帶有鏡頭位置的類別標簽,優(yōu)先級為1,當堆棧500開始查找匹配堆棧隊列中跟數(shù)據(jù)包508擁有同樣類別標簽的數(shù)據(jù)包時,數(shù)據(jù)包502和504匹配查找條件,數(shù)據(jù)包502由于仍然被鎖定,不會被替換。數(shù)據(jù)包504由于擁有和數(shù)據(jù)包508一樣的類別標簽,故數(shù)據(jù)包504將被數(shù)據(jù)包508替換,數(shù)據(jù)包508經(jīng)過優(yōu)先級查找后被推入堆棧中的相應位置。
圖6i和6j中,數(shù)據(jù)包504被刪除。由于數(shù)據(jù)包508的優(yōu)先級高于數(shù)據(jù)包504,所以數(shù)據(jù)包508不會被推入數(shù)據(jù)包504在堆棧500中的位置,通過優(yōu)先級查找,堆棧中已有數(shù)據(jù)包502和506,而數(shù)據(jù)包508的優(yōu)先級高于數(shù)據(jù)包506但低于數(shù)據(jù)包502,所以數(shù)據(jù)包508被推入到堆棧中數(shù)據(jù)包502和數(shù)據(jù)包506之間的位置。
實施例四
圖6k中,第四個數(shù)據(jù)包509到達堆棧500,它帶有分辨率的類別標簽,優(yōu)先級為4,當堆棧500開始查找匹配堆棧隊列中跟數(shù)據(jù)包509擁有同樣類別標簽的數(shù)據(jù)包時,數(shù)據(jù)包506匹配查找條件。數(shù)據(jù)包506由于擁有和數(shù)據(jù)包509一樣的類別標簽,故數(shù)據(jù)包506將被數(shù)據(jù)包509替換。
圖6l和6m中,數(shù)據(jù)包506被刪除。由于數(shù)據(jù)包509的優(yōu)先級低于數(shù)據(jù)包506,所以數(shù)據(jù)包509的優(yōu)先級標簽被替換為數(shù)據(jù)包506的優(yōu)先級標簽,并將替換過優(yōu)先級標簽后的數(shù)據(jù)包509推入原先數(shù)據(jù)包506在堆棧500的位置,而無需再通過優(yōu)先級查找,以節(jié)省計算資源。需要說明的是,這里所說的替換數(shù)據(jù)包509的優(yōu)先級標簽可以是服務器重新生成一個與數(shù)據(jù)包506相同的優(yōu)先級標簽并供數(shù)據(jù)包509替換、或直接將數(shù)據(jù)包506中的優(yōu)先級標簽提取并供數(shù)據(jù)包509替換。
參圖7,示出的是將本申請的通信方法同時應用于服務器101和終端設備106的又一實施方式。
終端設備106和服務器101都擁有各自的堆棧606、618。堆棧606和618的工作模式與上述實施例中描述的相似,在此不再贅述。如果終端輸入設備204發(fā)出的事件流604中某個數(shù)據(jù)包擁有和數(shù)據(jù)包608、…、614一樣的類別標簽,則堆棧606中的該數(shù)據(jù)包將被事件流604中新的相同標簽數(shù)據(jù)包所替換。其中,如果新的數(shù)據(jù)包的優(yōu)先級更高,則新數(shù)據(jù)包將被推入堆棧606中首個優(yōu)先級不低于其的數(shù)據(jù)包之后;如果新的數(shù)據(jù)包的優(yōu)先級小于等于該數(shù)據(jù)包,則新的數(shù)據(jù)包被替換為與該數(shù)據(jù)包相同優(yōu)先級的優(yōu)先級標簽,同時覆蓋該數(shù)據(jù)包。
如果服務器101從網(wǎng)絡104接收到的數(shù)據(jù)包包含與堆棧618中數(shù)據(jù)包620、…、626相同的類別標簽,則堆棧618中的該數(shù)據(jù)包將被從網(wǎng)絡104收到的新標簽所替代。其中,如果新的數(shù)據(jù)包的優(yōu)先級更高,則新數(shù)據(jù)包將被推入堆棧618中首個優(yōu)先級不低于其的數(shù)據(jù)包之后;如果新的數(shù)據(jù)包的優(yōu)先級小于等于該數(shù)據(jù)包,則新的數(shù)據(jù)包被替換為與該數(shù)據(jù)包相同優(yōu)先級的優(yōu)先級標簽,同時覆蓋該數(shù)據(jù)包。
數(shù)據(jù)包616和數(shù)據(jù)包628由于被鎖定用于處理,具有最高的優(yōu)先級,且不會被替換,即使來自事件流604或者網(wǎng)絡104的新數(shù)據(jù)包有同樣的類別標簽。這樣終端設備106上的堆棧606可以阻止過期的數(shù)據(jù)包通過網(wǎng)絡104被發(fā)送到服務器101,同時保證優(yōu)先級等級較高的數(shù)據(jù)包可以被有限發(fā)往服務器101,以進一步優(yōu)化處理效率。
在本申請數(shù)據(jù)處理方法提供的實施例中,當數(shù)據(jù)包628中包含的數(shù)據(jù)被鎖定用于處理時,其會被加工成處理數(shù)據(jù)包630,并被發(fā)送到處理器632,例如渲染引擎,處理器632將使用處理數(shù)據(jù)包630內攜帶的數(shù)據(jù)信息做渲染計算處理。
參圖8,示出了流程700中將一個新數(shù)據(jù)包推入堆棧的過程。
步驟701,堆棧收到一個帶有類別標簽的新數(shù)據(jù)包。
步驟704,堆棧檢索并匹配已有的數(shù)據(jù)包中與新數(shù)據(jù)包擁有相同標簽的數(shù)據(jù)包。
步驟708,如果找到匹配的已有數(shù)據(jù)包,檢查該包是否被鎖定。
步驟712,如果該匹配的數(shù)據(jù)包被鎖定,則該數(shù)據(jù)包被保留,不被覆蓋或忽略,堆棧查找是否存在其他未鎖定的匹配包。
步驟720,如果該匹配包未被鎖定,或者步驟712中找到堆棧中有其他未被鎖定的匹配數(shù)據(jù)包,則判斷新數(shù)據(jù)包的優(yōu)先級是否比匹配數(shù)據(jù)包高。
步驟710,如果新數(shù)據(jù)包的優(yōu)先級低于或等于匹配數(shù)據(jù)包,則集成匹配數(shù)據(jù)包的優(yōu)先級,并在堆棧中相同位置將匹配數(shù)據(jù)包覆蓋,替代。
步驟714,如果新數(shù)據(jù)包的優(yōu)先級高于匹配數(shù)據(jù)包,則刪除匹配數(shù)據(jù)包。
步驟706,根據(jù)新數(shù)據(jù)包的優(yōu)先級,從堆棧頂部或當前被刪除數(shù)據(jù)包的位置開始,向下查找第一個優(yōu)先級不低于其的數(shù)據(jù)包,并在其后位置插入新數(shù)據(jù)包。其中,如果步驟704中未找到匹配的已有數(shù)據(jù)包,則新數(shù)據(jù)包直接進入本步驟706;步驟712中如果沒有不存在其他未鎖定的匹配包,則新數(shù)據(jù)包直接進入本步驟706。
參圖9,介紹本申請數(shù)據(jù)處理方法的一實施例。在本實施例中,該方法包括以下步驟:
S21、接收第一數(shù)據(jù)包,所述第一數(shù)據(jù)包包括類別標簽、優(yōu)先級標簽和數(shù)據(jù)信息;
S22、判斷通信堆棧中是否存在與所述第一數(shù)據(jù)包的類別標簽相同且未鎖定的第二數(shù)據(jù)包,如果是,則根據(jù)所述第一數(shù)據(jù)包與所述第二數(shù)據(jù)包的優(yōu)先級標簽,比較所述第一數(shù)據(jù)包與所述第二數(shù)據(jù)包的優(yōu)先級;
S23、若所述第一數(shù)據(jù)包的優(yōu)先級小于等于所述第二數(shù)據(jù)包的優(yōu)先級,則將所述第一數(shù)據(jù)包的優(yōu)先級標簽替換為所述第二數(shù)據(jù)包的優(yōu)先級標簽,并用所述替換優(yōu)先級標簽后的第一數(shù)據(jù)包覆蓋所述第二數(shù)據(jù)包;
S24、若所述第一數(shù)據(jù)包的優(yōu)先級大于所述第二數(shù)據(jù)包的優(yōu)先級,則刪除所述第二數(shù)據(jù)包,并將所述第一數(shù)據(jù)包推入所述通信堆棧中首個優(yōu)先級不低于其的數(shù)據(jù)包之后;
S25、在所述第一數(shù)據(jù)包到達所述通信堆棧的底部時對其進行數(shù)據(jù)處理。
參圖10,介紹本申請計算系統(tǒng)的一實施例,該計算系統(tǒng)包括:
數(shù)據(jù)包接收模塊,用于接收第一數(shù)據(jù)包,所述第一數(shù)據(jù)包包括類別標簽、優(yōu)先級標簽和數(shù)據(jù)信息;
類別匹配模塊,用于判斷通信堆棧中是否存在與所述第一數(shù)據(jù)包的類別標簽相同且未鎖定的第二數(shù)據(jù)包,如果是,則通過優(yōu)先級判定模塊根據(jù)所述第一數(shù)據(jù)包與所述第二數(shù)據(jù)包的優(yōu)先級標簽,比較所述第一數(shù)據(jù)包與所述第二數(shù)據(jù)包的優(yōu)先級;
若所述第一數(shù)據(jù)包的優(yōu)先級小于等于所述第二數(shù)據(jù)包的優(yōu)先級,則通過數(shù)據(jù)包替換模塊將所述第一數(shù)據(jù)包的優(yōu)先級標簽替換為所述第二數(shù)據(jù)包的優(yōu)先級標簽,并用所述替換優(yōu)先級標簽后的第一數(shù)據(jù)包覆蓋所述第二數(shù)據(jù)包;
若所述第一數(shù)據(jù)包的優(yōu)先級大于所述第二數(shù)據(jù)包的優(yōu)先級,則通過隊列模塊刪除所述第二數(shù)據(jù)包,并將所述第一數(shù)據(jù)包推入所述通信堆棧中首個優(yōu)先級不低于其的數(shù)據(jù)包之后。
一實施例中,若所述類別匹配模塊判斷所述通信堆棧中不存在與所述第一數(shù)據(jù)包的類別標簽相同且未鎖定的第二數(shù)據(jù)包,則所述隊列模塊還用于將所述第一數(shù)據(jù)包推入所述通信堆棧中首個優(yōu)先級不低于其的數(shù)據(jù)包之后。
一實施例中,所述計算系統(tǒng)還包括鎖定模塊,用于將所述通信堆棧底部正被處理的數(shù)據(jù)包鎖定,所述被鎖定的數(shù)據(jù)包具有最高優(yōu)先級。
參圖11,介紹本申請計算系統(tǒng)的一實施例,該計算系統(tǒng)包括:
數(shù)據(jù)包接收模塊,用于接收第一數(shù)據(jù)包,所述第一數(shù)據(jù)包包括類別標簽、優(yōu)先級標簽和數(shù)據(jù)信息;
類別匹配模塊,用于判斷通信堆棧中是否存在與所述第一數(shù)據(jù)包的類別標簽相同且未鎖定的第二數(shù)據(jù)包,如果是,則通過優(yōu)先級判定模塊根據(jù)所述第一數(shù)據(jù)包與所述第二數(shù)據(jù)包的優(yōu)先級標簽,比較所述第一數(shù)據(jù)包與所述第二數(shù)據(jù)包的優(yōu)先級;
若所述第一數(shù)據(jù)包的優(yōu)先級小于等于所述第二數(shù)據(jù)包的優(yōu)先級,則通過數(shù)據(jù)包替換模塊將所述第一數(shù)據(jù)包的優(yōu)先級標簽替換為所述第二數(shù)據(jù)包的優(yōu)先級標簽,并用所述替換優(yōu)先級標簽后的第一數(shù)據(jù)包覆蓋所述第二數(shù)據(jù)包;
若所述第一數(shù)據(jù)包的優(yōu)先級大于所述第二數(shù)據(jù)包的優(yōu)先級,則通過隊列模塊刪除所述第二數(shù)據(jù)包,并將所述第一數(shù)據(jù)包推入所述通信堆棧中首個優(yōu)先級不低于其的數(shù)據(jù)包之后;
堆棧處理模塊,用于在所述第一數(shù)據(jù)包到達所述通信堆棧的底部時對其進行數(shù)據(jù)處理。
本申請實施例提供一種通信方法、數(shù)據(jù)處理方法和計算系統(tǒng),該方法通過布置通信堆棧和在數(shù)據(jù)包生成時加入類別標簽和優(yōu)先級標簽,數(shù)據(jù)包在推入通信堆棧前,會首先查找是否有與其類別標簽相同的未鎖定數(shù)據(jù)包,如果是,則會進一步根據(jù)其優(yōu)先級判斷其推入堆棧中的位置,并將通信堆棧中與其類別標簽相同的數(shù)據(jù)包刪除,保證通信堆棧中待處理的數(shù)據(jù)包都是最新的,避免發(fā)送過期的數(shù)據(jù)包帶來的資源浪費。
本發(fā)明是參照根據(jù)本發(fā)明實施例的方法和設備(系統(tǒng))來描述的。應理解可由計算機程序指令結合信息感應設備實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設備的處理器執(zhí)行的指令配合信息感應設備產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機程序指令也可存儲在能引導計算機或其他可編程數(shù)據(jù)處理設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設備上,使得在計算機或其他可編程設備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
在一個典型的配置中,計算設備包括一個或多個處理器(CPU)、輸入/輸出接口、網(wǎng)絡接口和內存。
內存可能包括計算機可讀介質中的非永久性存儲器,隨機存取存儲器(RAM)和/或非易失性內存等形式,如只讀存儲器(ROM)或閃存(flash RAM)。內存是計算機可讀介質的示例。
計算機可讀介質包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術來實現(xiàn)信息存儲。信息可以是計算機可讀指令、數(shù)據(jù)結構、程序的模塊或其他數(shù)據(jù)。計算機的存儲介質的例子包括,但不限于相變內存(PRAM)、靜態(tài)隨機存取存儲器(SRAM)、動態(tài)隨機存取存儲器(DRAM)、其他類型的隨機存取存儲器(RAM)、只讀存儲器(ROM)、電可擦除可編程只讀存儲器(EEPROM)、快閃記憶體或其他內存技術、只讀光盤只讀存儲器(CD-ROM)、數(shù)字多功能光盤(DVD)或其他光學存儲、磁盒式磁帶,磁帶磁磁盤存儲或其他磁性存儲設備或任何其他非傳輸介質,可用于存儲可以被計算設備訪問的信息。按照本文中的界定,計算機可讀介質不包括暫存電腦可讀媒體(transitory media),如調制的數(shù)據(jù)信號和載波。
還需要說明的是,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、商品或者設備中還存在另外的相同要素。
以上所述僅為本申請的實施例而已,并不用于限制本申請。對于本領域技術人員來說,本申請可以有各種更改和變化。凡在本申請的精神和原理之內所作的任何修改、等同替換、改進等,均應包含在本申請的權利要求范圍之內。