两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種流數(shù)據(jù)的并發(fā)讀寫方法和裝置與流程

文檔序號:11157600閱讀:444來源:國知局
一種流數(shù)據(jù)的并發(fā)讀寫方法和裝置與制造工藝

本發(fā)明涉及流數(shù)據(jù)存儲技術(shù)領(lǐng)域,具體涉及一種流數(shù)據(jù)的并發(fā)讀寫方法以及一種流數(shù)據(jù)的并發(fā)讀寫裝置。



背景技術(shù):

流數(shù)據(jù)為可以采用流式傳輸?shù)姆绞皆诰W(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù),大型網(wǎng)站系統(tǒng)經(jīng)常依賴于內(nèi)容分發(fā)網(wǎng)絡(luò)(Content Delivery Network,CDN)對流數(shù)據(jù)進(jìn)行傳輸,內(nèi)容分發(fā)網(wǎng)絡(luò)是通過在現(xiàn)有的網(wǎng)絡(luò)中增加一層新的網(wǎng)絡(luò)結(jié)構(gòu),使用戶可以將數(shù)據(jù)傳輸?shù)骄徒墓?jié)點上或從就近的節(jié)點獲取所需的數(shù)據(jù)。在內(nèi)容分發(fā)網(wǎng)絡(luò)中,部署有傳輸節(jié)點,用于緩沖流數(shù)據(jù),就近給用戶提供服務(wù)。

流數(shù)據(jù)在經(jīng)傳輸節(jié)點進(jìn)行分發(fā)時,可采用并發(fā)讀寫的工作方式,在向共享內(nèi)存的緩沖隊列中寫入流數(shù)據(jù)的同時,從共享內(nèi)存的緩沖隊列讀取流數(shù)據(jù)。通常對于同一流數(shù)據(jù),會同時存在一個寫訪問和多個讀訪問。因此,可能存在對緩沖隊列的相同位置同時發(fā)起讀、寫訪問的情況,將會導(dǎo)致緩沖隊列中的數(shù)據(jù)混亂,數(shù)據(jù)的一致性會出現(xiàn)問題。

為了避免上述問題,通常采用鎖操作的方式來避免讀和寫的位置不會重疊,鎖操作是一種保證互斥訪問內(nèi)存的保護(hù)措施,具體而言,當(dāng)同時發(fā)起對流數(shù)據(jù)隊列的讀和/或訪問時,要求訪問操作首先獲取流數(shù)據(jù)隊列的互斥鎖,才能具有訪問流數(shù)據(jù)隊列的權(quán)限,獲得互斥鎖的訪問操作訪問流數(shù)據(jù)隊列,并在結(jié)束對流數(shù)據(jù)隊列的訪問時,釋放互斥鎖,之后其他訪問操作可根據(jù)獲取的互斥鎖依次訪問流數(shù)據(jù)隊列。

利用鎖操作的方式雖然避免了對流數(shù)據(jù)隊列進(jìn)行同時操作時引起的數(shù)據(jù)混亂和訪問數(shù)據(jù)出錯的問題,但是通過鎖操作的方式控制并發(fā)讀寫,由于請求鎖、等待鎖和釋放鎖都會增加處理開銷,消耗處理器時間,使得在執(zhí)行鎖操作的過程中造成CPU資源的浪費。



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

鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的流數(shù)據(jù)的并發(fā)讀寫方法和相應(yīng)的裝置。

依據(jù)本發(fā)明的一個方面,提供了一種流數(shù)據(jù)的并發(fā)讀寫方法,包括:

將流數(shù)據(jù)循環(huán)順次寫入由多個數(shù)據(jù)隊列構(gòu)建的存儲區(qū);

從所述存儲區(qū)讀取流數(shù)據(jù)時,預(yù)估當(dāng)前寫入數(shù)據(jù)隊列之后的預(yù)備寫入數(shù)據(jù)隊列為待讀取數(shù)據(jù)隊列;

從待讀取數(shù)據(jù)隊列轉(zhuǎn)向讀取流數(shù)據(jù)更新的第一目標(biāo)數(shù)據(jù)隊列。

可選地,所述將流數(shù)據(jù)循環(huán)順次寫入由多個數(shù)據(jù)隊列構(gòu)建的存儲區(qū)包括:

順次向各個數(shù)據(jù)隊列寫入設(shè)定的數(shù)據(jù)時長的流數(shù)據(jù)。

可選地,所述預(yù)估當(dāng)前寫入數(shù)據(jù)隊列之后的預(yù)備寫入數(shù)據(jù)隊列為待讀取數(shù)據(jù)隊列包括:

判斷當(dāng)前時間距離待讀取數(shù)據(jù)隊列的起始寫入時間是否超出第一時間閾值;

若是,則確定當(dāng)前寫入數(shù)據(jù)隊列之后的預(yù)備寫入數(shù)據(jù)隊列可能為待讀取數(shù)據(jù)隊列,所述第一時間閾值為除去一個數(shù)據(jù)隊列之外其他隊列的時間長度的總和。

可選地,所述從待讀取數(shù)據(jù)隊列轉(zhuǎn)向讀取流數(shù)據(jù)更新的第一目標(biāo)數(shù)據(jù)隊列包括:

查找存儲有最新流數(shù)據(jù)的第一目標(biāo)數(shù)據(jù)隊列;

讀取查找的第一目標(biāo)數(shù)據(jù)隊列。

可選地,所述查找存儲有最新流數(shù)據(jù)的第一目標(biāo)數(shù)據(jù)隊列包括:

提取各個數(shù)據(jù)隊列的起始寫入時間;

查找起始寫入時間距離當(dāng)前時間最近的數(shù)據(jù)隊列為第一目標(biāo)數(shù)據(jù)隊列。

可選地,所述查找存儲有最新流數(shù)據(jù)的第一目標(biāo)數(shù)據(jù)隊列包括:

調(diào)用流數(shù)據(jù)讀取線程訪問流數(shù)據(jù)寫入線程;

接收流數(shù)據(jù)寫入線程反饋的最新流數(shù)據(jù)的第一目標(biāo)數(shù)據(jù)隊列的隊列標(biāo)識。

可選地,所述方法還包括:

在將流數(shù)據(jù)寫入某一數(shù)據(jù)隊列后,對設(shè)定位置記錄的最新隊列進(jìn)行更新;

所述查找存儲有最新流數(shù)據(jù)的第一目標(biāo)數(shù)據(jù)隊列包括:

在所述設(shè)定位置查找存儲有最新流數(shù)據(jù)的最新隊列。

可選地,在所述讀取查找的第一目標(biāo)數(shù)據(jù)隊列之前,所述從待讀取數(shù)據(jù)隊列轉(zhuǎn)向讀取流數(shù)據(jù)更新的第一目標(biāo)數(shù)據(jù)隊列還包括:

查找所述第一目標(biāo)數(shù)據(jù)隊列中的最新畫面組;

所述讀取查找的第一目標(biāo)數(shù)據(jù)隊列包括:

在所述第一目標(biāo)數(shù)據(jù)隊列中,從所查找的最新畫面組開始讀取流數(shù)據(jù)。

可選地,在所述查找所述第一目標(biāo)數(shù)據(jù)隊列中的最新畫面組之后,包括:

查找所述第一目標(biāo)數(shù)據(jù)隊列中的最新畫面組的I幀;

所述在所述第一目標(biāo)數(shù)據(jù)隊列中,從所查找的最新畫面組開始讀取流數(shù)據(jù)包括:

在所述第一目標(biāo)數(shù)據(jù)隊列中,從所查找的最新畫面組的I幀開始讀取流數(shù)據(jù)。

可選地,所述方法還包括:

在讀取前一數(shù)據(jù)隊列時,根據(jù)最后讀取的流數(shù)據(jù)預(yù)估下一個讀取的流數(shù)據(jù);

判定待讀取的下一數(shù)據(jù)隊列的第一個流數(shù)據(jù)并非預(yù)估的流數(shù)據(jù)時,從所述待讀取的下一數(shù)據(jù)隊列轉(zhuǎn)向讀取除待寫入的下一數(shù)據(jù)隊列之外的第二目標(biāo)數(shù)據(jù)隊列。

可選地,所述從所述待讀取的下一數(shù)據(jù)隊列轉(zhuǎn)向讀取除待寫入的下一數(shù)據(jù)隊列之外的第二目標(biāo)數(shù)據(jù)隊列包括:

查找起始寫入時間距離當(dāng)前時間未超出第二時間閾值的任一第二目標(biāo)數(shù)據(jù)隊列,所述第二時間閾值為除去一個數(shù)據(jù)隊列之外其他隊列的時間長度的總和。

可選地,所述從所述待讀取的下一數(shù)據(jù)隊列轉(zhuǎn)向讀取除待寫入的下一數(shù)據(jù)隊列之外的第二目標(biāo)數(shù)據(jù)隊列包括:

從所述待讀取的下一數(shù)據(jù)隊列轉(zhuǎn)向讀取存儲有最新流數(shù)據(jù)的第二目標(biāo)數(shù)據(jù)隊列。

可選地,在所述將流數(shù)據(jù)循環(huán)順次寫入由多個數(shù)據(jù)隊列構(gòu)建的存儲區(qū)之前,所述方法還包括:

接收從另一傳輸節(jié)點推送至當(dāng)前傳輸節(jié)點的流數(shù)據(jù);

在所述從所述存儲區(qū)讀取流數(shù)據(jù)之前,所述方法還包括:

接收從當(dāng)前傳輸節(jié)點對流數(shù)據(jù)的讀取請求。

可選地,所述將流數(shù)據(jù)循環(huán)順次寫入由多個數(shù)據(jù)隊列構(gòu)建的存儲區(qū)包括:

由流數(shù)據(jù)寫入線程將流數(shù)據(jù)循環(huán)順次寫入由多個數(shù)據(jù)隊列構(gòu)建的存儲區(qū);

所述從所述存儲區(qū)讀取流數(shù)據(jù)包括:

由流數(shù)據(jù)讀取線程從所述存儲區(qū)讀取流數(shù)據(jù)。

可選地,所述由流數(shù)據(jù)讀取線程從所述存儲區(qū)讀取流數(shù)據(jù)包括:

記錄當(dāng)前讀取的數(shù)據(jù)隊列的隊列標(biāo)識和流數(shù)據(jù)的位置標(biāo)識;

推算下一個讀取的流數(shù)據(jù)的位置標(biāo)識和隊列標(biāo)識,并進(jìn)行讀取。

可選地,所述從所述存儲區(qū)讀取流數(shù)據(jù)包括:

按照數(shù)據(jù)隊列的隊列標(biāo)識順次從各個數(shù)據(jù)隊列讀取流數(shù)據(jù)。

根據(jù)本發(fā)明的另一方面,提供了一種流數(shù)據(jù)的并發(fā)讀寫裝置,包括:

流數(shù)據(jù)寫入模塊,用于將流數(shù)據(jù)循環(huán)順次寫入由多個數(shù)據(jù)隊列構(gòu)建的存儲區(qū);

預(yù)估模塊,用于從所述存儲區(qū)讀取流數(shù)據(jù)時,預(yù)估當(dāng)前寫入數(shù)據(jù)隊列之后的預(yù)備寫入數(shù)據(jù)隊列為待讀取數(shù)據(jù)隊列;

第一隊列讀取模塊,用于從待讀取數(shù)據(jù)隊列轉(zhuǎn)向讀取流數(shù)據(jù)更新的第一目標(biāo)數(shù)據(jù)隊列。

可選地,所述流數(shù)據(jù)寫入模塊,具體用于順次向各個數(shù)據(jù)隊列寫入設(shè)定的數(shù)據(jù)時長的流數(shù)據(jù)。

可選地,所述預(yù)估模塊包括:

第一判斷子模塊,用于判斷當(dāng)前時間距離待讀取數(shù)據(jù)隊列的起始寫入時間是否超出第一時間閾值;

第一確定子模塊,用于若是,則確定當(dāng)前寫入數(shù)據(jù)隊列之后的預(yù)備寫入數(shù)據(jù)隊列可能為待讀取數(shù)據(jù)隊列,所述第一時間閾值為除去一個數(shù)據(jù)隊列之外其他隊列的時間長度的總和。

可選地,所述第一隊列讀取模塊包括:

第一查找子模塊,用于查找存儲有最新流數(shù)據(jù)的第一目標(biāo)數(shù)據(jù)隊列;

第一讀取子模塊,讀取查找的第一目標(biāo)數(shù)據(jù)隊列。

可選地,所述第一查找子模塊包括:

寫入時間提取子單元,用于提取各個數(shù)據(jù)隊列的起始寫入時間;

第一查找子單元,用于查找起始寫入時間距離當(dāng)前時間最近的數(shù)據(jù)隊列為第一目標(biāo)數(shù)據(jù)隊列。

可選地,所述第一查找子模塊包括:

寫入線程調(diào)用子單元,用于調(diào)用流數(shù)據(jù)讀取線程訪問流數(shù)據(jù)寫入線程;

隊列標(biāo)識接收子單元,接收流數(shù)據(jù)寫入線程反饋的最新流數(shù)據(jù)的第一目標(biāo)數(shù)據(jù)隊列的隊列標(biāo)識。

可選地,所述裝置還包括:

最新隊列更新模塊,用于在將流數(shù)據(jù)寫入某一數(shù)據(jù)隊列后,對設(shè)定位置記錄的最新隊列進(jìn)行更新;

所述第一查找子模塊,具體用于在所述設(shè)定位置查找存儲有最新流數(shù)據(jù)的最新隊列。

可選地,所述第一隊列讀取模塊還包括:

畫面組查找子單元,用于在所述讀取查找的第一目標(biāo)數(shù)據(jù)隊列之前,查找所述第一目標(biāo)數(shù)據(jù)隊列中的最新畫面組;

所述第一讀取子模塊,具體用于在所述第一目標(biāo)數(shù)據(jù)隊列中,從所查找的最新畫面組開始讀取流數(shù)據(jù)。

可選地,所述裝置還包括:

幀查找子模塊,用于在所述查找所述第一目標(biāo)數(shù)據(jù)隊列中的最新畫面組之后,查找所述第一目標(biāo)數(shù)據(jù)隊列中的最新畫面組的I幀;

所述第一讀取子模塊,具體用于在所述第一目標(biāo)數(shù)據(jù)隊列中,從所查找的最新畫面組的I幀開始讀取流數(shù)據(jù)。

可選地,所述裝置還包括:

流數(shù)據(jù)預(yù)估模塊,用于在讀取前一數(shù)據(jù)隊列時,根據(jù)最后讀取的流數(shù)據(jù)預(yù)估下一個讀取的流數(shù)據(jù);

第二隊列讀取模塊,用于判定待讀取的下一數(shù)據(jù)隊列的第一個流數(shù)據(jù)并非預(yù)估的流數(shù)據(jù)時,從所述待讀取的下一數(shù)據(jù)隊列轉(zhuǎn)向讀取除待寫入的下一數(shù)據(jù)隊列之外的第二目標(biāo)數(shù)據(jù)隊列。

可選地,所述第二隊列讀取模塊包括:

第二查找子單元,用于查找起始寫入時間距離當(dāng)前時間未超出第二時間閾值的任一第二目標(biāo)數(shù)據(jù)隊列,所述第二時間閾值為除去一個數(shù)據(jù)隊列之外其他隊列的時間長度的總和。

可選地,所述第二隊列讀取模塊,具體用于從所述待讀取的下一數(shù)據(jù)隊列轉(zhuǎn)向讀取存儲有最新流數(shù)據(jù)的第二目標(biāo)數(shù)據(jù)隊列。

可選地,所述裝置還包括:

流數(shù)據(jù)接收模塊,用于在所述將流數(shù)據(jù)循環(huán)順次寫入由多個數(shù)據(jù)隊列構(gòu)建的存儲區(qū)之前,接收從另一傳輸節(jié)點推送至當(dāng)前傳輸節(jié)點的流數(shù)據(jù);

所述裝置還包括:

讀取請求接收模塊,用于在所述從所述存儲區(qū)讀取流數(shù)據(jù)之前,接收從當(dāng)前傳輸節(jié)點對流數(shù)據(jù)的讀取請求。

可選地,所述流數(shù)據(jù)寫入模塊,具體用于由流數(shù)據(jù)寫入線程將流數(shù)據(jù)循環(huán)順次寫入由多個數(shù)據(jù)隊列構(gòu)建的存儲區(qū);

所述預(yù)估模塊包括:

線程讀取子模塊,用于由流數(shù)據(jù)讀取線程從所述存儲區(qū)讀取流數(shù)據(jù)。

可選地,所述線程讀取子模塊包括:

標(biāo)識記錄子單元,用于記錄當(dāng)前讀取的數(shù)據(jù)隊列的隊列標(biāo)識和流數(shù)據(jù)的位置標(biāo)識;

推算與讀取子單元,用于推算下一個讀取的流數(shù)據(jù)的位置標(biāo)識和隊列標(biāo)識,并進(jìn)行讀取。

可選地,所述預(yù)估模塊包括:

順次讀取子模塊,用于按照數(shù)據(jù)隊列的隊列標(biāo)識順次從各個數(shù)據(jù)隊列讀取流數(shù)據(jù)。

根據(jù)本發(fā)明的一種流數(shù)據(jù)的并發(fā)讀寫方法和裝置可以通過將流數(shù)據(jù)循環(huán)順次寫入由多個數(shù)據(jù)隊列構(gòu)建的存儲區(qū),從所述存儲區(qū)讀取流數(shù)據(jù)時,預(yù)估當(dāng)前寫入數(shù)據(jù)隊列之后的預(yù)備寫入數(shù)據(jù)隊列為待讀取數(shù)據(jù)隊列,從待讀取數(shù)據(jù)隊列轉(zhuǎn)向讀取流數(shù)據(jù)更新的第一目標(biāo)數(shù)據(jù)隊列,使得可以通過在預(yù)估到預(yù)備寫入數(shù)據(jù)隊列為待讀取數(shù)據(jù)隊列情況下,轉(zhuǎn)向讀取流數(shù)據(jù)更新的數(shù)據(jù)隊列,防止當(dāng)前寫入數(shù)據(jù)隊列被寫滿后,轉(zhuǎn)到預(yù)備寫入數(shù)據(jù)隊列,也就是待讀取數(shù)據(jù)隊列開始寫入,避免出現(xiàn)待讀取數(shù)據(jù)隊列中的流數(shù)據(jù)被寫入操作所刪除或覆蓋的情況發(fā)生,相比通過鎖操作的方式控制并發(fā)讀寫,降低了流數(shù)據(jù)并發(fā)讀寫時的處理器資源占用,提高了流數(shù)據(jù)的并發(fā)讀寫的效率。

上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的具體實施方式。

附圖說明

通過閱讀下文優(yōu)選實施方式的詳細(xì)描述,各種其他的優(yōu)點和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認(rèn)為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:

圖1示出了根據(jù)本發(fā)明實施例一的一種流數(shù)據(jù)的并發(fā)讀寫方法的步驟流程示意圖;

圖2示出了根據(jù)本發(fā)明實施例二的一種流數(shù)據(jù)的并發(fā)讀寫方法的步驟流程示意圖;

圖3示出了根據(jù)本發(fā)明實施例三的一種流數(shù)據(jù)的并發(fā)讀寫方法的步驟流程示意圖;

圖4示出了根據(jù)本發(fā)明實施例四的一種流數(shù)據(jù)的并發(fā)讀寫裝置的結(jié)構(gòu)框圖。

具體實施方式

下面將參照附圖更詳細(xì)地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應(yīng)當(dāng)理解,可以以各種形式實現(xiàn)本公開而不應(yīng)被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。

參照圖1,示出了根據(jù)本發(fā)明實施例一的一種流數(shù)據(jù)的并發(fā)讀寫方法的步驟流程示意圖,具體可以包括如下步驟:

步驟101,將流數(shù)據(jù)循環(huán)順次寫入由多個數(shù)據(jù)隊列構(gòu)建的存儲區(qū)。

本發(fā)明可以應(yīng)用在視頻直播或遠(yuǎn)程攝像頭等服務(wù)中,在視頻直播應(yīng)用或遠(yuǎn)程攝像頭應(yīng)用中,需要經(jīng)過傳輸節(jié)點分發(fā)流數(shù)據(jù),其中,流數(shù)據(jù)為可以采用流式傳輸?shù)姆绞皆诰W(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù),傳輸節(jié)點是指用于分發(fā)流數(shù)據(jù)的流媒體服務(wù)器。

在本發(fā)明實施例中,存儲區(qū)為傳輸節(jié)點的內(nèi)存中為流數(shù)據(jù)讀寫分配的一段存儲空間,具體采用隊列的數(shù)據(jù)結(jié)構(gòu),由多個數(shù)據(jù)隊列組成一個存儲區(qū),該存儲區(qū)可以循環(huán)順次地被寫入或讀取。存儲區(qū)可以由任意適用的個數(shù)的數(shù)據(jù)隊列組成,本發(fā)明實施例對此不做限制。

具體而言,流數(shù)據(jù)寫入時,從第一個數(shù)據(jù)隊列開始順次寫入,并在寫滿存儲區(qū)后,再從第一個數(shù)據(jù)隊列開始順次寫入,以此方式實現(xiàn)將流數(shù)據(jù)循環(huán)順次地寫入存儲區(qū)。

例如,存儲區(qū)是由7個數(shù)據(jù)隊列組成,設(shè)定每個數(shù)據(jù)隊列中存儲5秒的視頻流數(shù)據(jù)。先從第1個數(shù)據(jù)隊列開始順次寫入,每次寫滿5秒的視頻流數(shù)據(jù)后,切換到下一個數(shù)據(jù)隊列繼續(xù)寫入,直到7個數(shù)據(jù)隊列全部寫滿,再從第1個數(shù)據(jù)隊列開始,用新的數(shù)據(jù)隊列覆蓋掉第1個數(shù)據(jù)隊列中的視頻流數(shù)據(jù),以此方式繼續(xù)循環(huán)地將視頻流數(shù)據(jù)寫入7個數(shù)據(jù)隊列構(gòu)建地存儲區(qū)。

在視頻直播或遠(yuǎn)程攝像頭的應(yīng)用場景下,一個傳輸節(jié)點上通常會同時有多個流數(shù)據(jù)的分發(fā)任務(wù),為每個流數(shù)據(jù)分配對應(yīng)的由多個數(shù)據(jù)隊列構(gòu)建的存儲區(qū),當(dāng)有視頻流數(shù)據(jù)傳輸?shù)絺鬏敼?jié)點時,將視頻流數(shù)據(jù)以上述方式寫入由多個數(shù)據(jù)隊列構(gòu)建的存儲區(qū),以供流數(shù)據(jù)傳輸連接從存儲區(qū)中讀取視頻流數(shù)據(jù)。

步驟102,從所述存儲區(qū)讀取流數(shù)據(jù)時,預(yù)估當(dāng)前寫入數(shù)據(jù)隊列之后的預(yù)備寫入數(shù)據(jù)隊列為待讀取數(shù)據(jù)隊列。

在本發(fā)明實施例中,從存儲區(qū)讀取流數(shù)據(jù)時,通常當(dāng)一個數(shù)據(jù)隊列中的數(shù)據(jù)讀取完畢后,順次讀取下一個數(shù)據(jù)隊列中的流數(shù)據(jù),以此方式循環(huán)地從存儲區(qū)地各個數(shù)據(jù)隊列中讀取流數(shù)據(jù)。當(dāng)前寫入數(shù)據(jù)隊列為當(dāng)前正在寫入流數(shù)據(jù)的隊列,預(yù)備寫入數(shù)據(jù)隊列為當(dāng)前寫入數(shù)據(jù)隊列被寫滿后要被寫入的數(shù)據(jù)隊列,待讀取數(shù)據(jù)隊列為當(dāng)前準(zhǔn)備要讀取流數(shù)據(jù)的隊列。多個讀取并發(fā)時,每個讀取操作對應(yīng)一個待讀取數(shù)據(jù)隊列。

對于每個讀取操作,在每次從數(shù)據(jù)隊列中讀取流數(shù)據(jù)時,需要先進(jìn)行預(yù)估,預(yù)估到待讀取數(shù)據(jù)隊列為當(dāng)前寫入數(shù)據(jù)隊列之后的預(yù)備寫入數(shù)據(jù)隊列情況,也就是當(dāng)前正在讀取的隊列是否就是當(dāng)前正在寫入的數(shù)據(jù)隊列之后要寫入的一個數(shù)據(jù)隊列的情況。如果待讀取數(shù)據(jù)隊列不是當(dāng)前寫入數(shù)據(jù)隊列之后的預(yù)備寫入數(shù)據(jù)隊列,那么繼續(xù)從待讀取數(shù)據(jù)隊列中讀取數(shù)據(jù);如果待讀取數(shù)據(jù)隊列為當(dāng)前寫入數(shù)據(jù)隊列之后的預(yù)備寫入數(shù)據(jù)隊列,那么執(zhí)行按照步驟103執(zhí)行下一步操作。

具體可以采用任意適用的方式預(yù)估待讀取數(shù)據(jù)隊列為當(dāng)前寫入數(shù)據(jù)隊列之后的預(yù)備寫入數(shù)據(jù)隊列,本實施例對此不作限定。例如,在視頻直播應(yīng)用中,由于每個數(shù)據(jù)隊列中存儲5秒的視頻流數(shù)據(jù),那么第1個數(shù)據(jù)隊列中的起始的流數(shù)據(jù)生成的時間一定比第7個數(shù)據(jù)隊列中的起始的流數(shù)據(jù)生成的時間要早至少30秒。對于每個數(shù)據(jù)隊列記錄有起始寫入該數(shù)據(jù)隊列的時間,而流數(shù)據(jù)寫入數(shù)據(jù)隊列的時間一定晚于流數(shù)據(jù)生成的時間,如果待讀取數(shù)據(jù)隊列為第1個數(shù)據(jù)隊列,在讀取流數(shù)據(jù)前進(jìn)行判斷,如果當(dāng)前時間減去第1個數(shù)據(jù)隊列對應(yīng)的起始寫入時間的差值大于等于30秒,那么當(dāng)前寫入數(shù)據(jù)隊列就有可能是第7個數(shù)據(jù)隊列,而第1個數(shù)據(jù)隊列為第7個數(shù)據(jù)隊列之后的預(yù)備寫入數(shù)據(jù)隊列。由此根據(jù)記錄的每個數(shù)據(jù)隊列的寫入時間,預(yù)估出當(dāng)前寫入數(shù)據(jù)隊列之后的預(yù)備寫入數(shù)據(jù)隊列為待讀取數(shù)據(jù)隊列。

步驟103,從待讀取數(shù)據(jù)隊列轉(zhuǎn)向讀取流數(shù)據(jù)更新的第一目標(biāo)數(shù)據(jù)隊列。

第一目標(biāo)數(shù)據(jù)隊列為存儲有相比待讀取數(shù)據(jù)隊列更新的流數(shù)據(jù)的數(shù)據(jù)隊列。由于存儲區(qū)中數(shù)據(jù)隊列中的數(shù)據(jù)時順序?qū)懭氲?,那么待讀取數(shù)據(jù)隊列之后直到當(dāng)前寫入數(shù)據(jù)隊列的數(shù)據(jù)隊列都可以作為第一目標(biāo)數(shù)據(jù)隊列。具體選擇哪一個流數(shù)據(jù)更新的數(shù)據(jù)隊列作為第一目標(biāo)數(shù)據(jù)隊列,本實施例對此不做限定。

當(dāng)預(yù)估到當(dāng)前寫入數(shù)據(jù)隊列之后的預(yù)備寫入數(shù)據(jù)隊列為待讀取數(shù)據(jù)隊列時,為了防止當(dāng)前寫入數(shù)據(jù)隊列被寫滿后,轉(zhuǎn)到待讀取數(shù)據(jù)隊列開始寫入,導(dǎo)致出現(xiàn)待讀取數(shù)據(jù)隊列中的流數(shù)據(jù)被寫入操作所刪除或覆蓋的情況發(fā)生,轉(zhuǎn)為讀取流數(shù)據(jù)更新的第一目標(biāo)數(shù)據(jù)隊列。例如,將待讀取數(shù)據(jù)隊列的下一個數(shù)據(jù)隊列作為第一目標(biāo)數(shù)據(jù)隊列,或者將當(dāng)前寫入數(shù)據(jù)隊列作為第一目標(biāo)數(shù)據(jù)隊列,并且只要保證寫入的位置在讀取的位置之前,那么待讀取的位置的流數(shù)據(jù)就不會被寫入操作所刪除或覆蓋。

綜上所述,依據(jù)本發(fā)明實施例,通過將流數(shù)據(jù)循環(huán)順次寫入由多個數(shù)據(jù)隊列構(gòu)建的存儲區(qū),從所述存儲區(qū)讀取流數(shù)據(jù)時,預(yù)估當(dāng)前寫入數(shù)據(jù)隊列之后的預(yù)備寫入數(shù)據(jù)隊列為待讀取數(shù)據(jù)隊列,從待讀取數(shù)據(jù)隊列轉(zhuǎn)向讀取流數(shù)據(jù)更新的第一目標(biāo)數(shù)據(jù)隊列,使得可以通過在預(yù)估到預(yù)備寫入數(shù)據(jù)隊列為待讀取數(shù)據(jù)隊列情況下,轉(zhuǎn)向讀取流數(shù)據(jù)更新的數(shù)據(jù)隊列,防止當(dāng)前寫入數(shù)據(jù)隊列被寫滿后,轉(zhuǎn)到預(yù)備寫入數(shù)據(jù)隊列,也就是待讀取數(shù)據(jù)隊列開始寫入,避免出現(xiàn)待讀取數(shù)據(jù)隊列中的流數(shù)據(jù)被寫入操作所刪除或覆蓋的情況發(fā)生,相比通過鎖操作的方式控制并發(fā)讀寫,降低了流數(shù)據(jù)并發(fā)讀寫時的處理器資源占用,提高了流數(shù)據(jù)的并發(fā)讀寫的效率。

在本發(fā)明實施例中,優(yōu)選地,所述將流數(shù)據(jù)循環(huán)順次寫入由多個數(shù)據(jù)隊列構(gòu)建的存儲區(qū)的一種實現(xiàn)方式為,順次向各個數(shù)據(jù)隊列寫入設(shè)定的數(shù)據(jù)時長的流數(shù)據(jù)。

具體而言,可以為各數(shù)據(jù)隊列設(shè)定可以寫入的流數(shù)據(jù)的數(shù)據(jù)時長,當(dāng)向一個數(shù)據(jù)隊列中寫入流數(shù)據(jù)達(dá)到該數(shù)據(jù)隊列設(shè)定的數(shù)據(jù)時長時,轉(zhuǎn)向下一個數(shù)據(jù)隊列寫入流數(shù)據(jù)。具體可以設(shè)定任意適用的時長作為寫入的流數(shù)據(jù)的數(shù)據(jù)時長,本實施例對此不做限定。例如,設(shè)定每個數(shù)據(jù)隊列中可以寫入播放時長為5秒的視頻流數(shù)據(jù),在順次寫入各個數(shù)據(jù)隊列時,一個數(shù)據(jù)隊列中寫入5秒的視頻流數(shù)據(jù)后,就轉(zhuǎn)向下一個數(shù)據(jù)隊列開始寫入,以此方式循環(huán)順次寫入存儲區(qū)。

在本發(fā)明實施例中,優(yōu)選地,所述預(yù)估當(dāng)前寫入數(shù)據(jù)隊列之后的預(yù)備寫入數(shù)據(jù)隊列為待讀取數(shù)據(jù)隊列的一種實現(xiàn)方式為,判斷當(dāng)前時間距離待讀取數(shù)據(jù)隊列的起始寫入時間是否超出第一時間閾值;若是,則確定當(dāng)前寫入數(shù)據(jù)隊列之后的預(yù)備寫入數(shù)據(jù)隊列可能為待讀取數(shù)據(jù)隊列,所述第一時間閾值為除去一個數(shù)據(jù)隊列之外其他隊列的時間長度的總和。

具體而言,每個數(shù)據(jù)隊列在寫入流數(shù)據(jù)時記錄有起始寫入時間,第一時間閾值為除去一個數(shù)據(jù)隊列之外其他隊列的時間長度的總和。例如一共有7個數(shù)據(jù)隊列,每個數(shù)據(jù)隊列中存儲有5秒的數(shù)據(jù)時長的流數(shù)據(jù),那么第一時間閾值為5乘以6等于30秒。

在讀取流數(shù)據(jù)時,判斷當(dāng)前時間減去待讀取數(shù)據(jù)隊列的起始寫入時間是否超過第一時間閾值,如果超過了第一時間閾值,那么確定當(dāng)前寫入數(shù)據(jù)隊列之后的預(yù)備寫入數(shù)據(jù)隊列可能為待讀取數(shù)據(jù)隊列。

在本發(fā)明實施例中,優(yōu)選地,所述從所述存儲區(qū)讀取流數(shù)據(jù)的一種實現(xiàn)方式為,按照數(shù)據(jù)隊列的隊列標(biāo)識順次從各個數(shù)據(jù)隊列讀取流數(shù)據(jù)。

具體而言,數(shù)據(jù)隊列的隊列標(biāo)識是指為數(shù)據(jù)隊列設(shè)置的標(biāo)識,例如隊列編號。按照數(shù)據(jù)隊列的隊列標(biāo)識順次從各個數(shù)據(jù)隊列讀取流數(shù)據(jù),例如讀取完第1個數(shù)據(jù)隊列的流數(shù)據(jù)后,讀取第2個數(shù)據(jù)隊列的流數(shù)據(jù),以此方式實現(xiàn)順次從各個數(shù)據(jù)隊列讀取流數(shù)據(jù)。

參照圖2,示出了根據(jù)本發(fā)明實施例二的一種流數(shù)據(jù)的并發(fā)讀寫方法的步驟流程示意圖,具體可以包括如下步驟:

步驟201,將流數(shù)據(jù)循環(huán)順次寫入由多個數(shù)據(jù)隊列構(gòu)建的存儲區(qū)。

步驟202,從所述存儲區(qū)讀取流數(shù)據(jù)時,預(yù)估當(dāng)前寫入數(shù)據(jù)隊列之后的預(yù)備寫入數(shù)據(jù)隊列為待讀取數(shù)據(jù)隊列。

步驟203,查找存儲有最新流數(shù)據(jù)的第一目標(biāo)數(shù)據(jù)隊列。

在本發(fā)明實施例中,將存儲有最新流數(shù)據(jù)的數(shù)據(jù)隊列作為第一目標(biāo)數(shù)據(jù)隊列,具體查找存儲有最新流數(shù)據(jù)的數(shù)據(jù)隊列的方式可以有多種,具體采用的方式,本發(fā)明實施例對此不作限定。例如,可以查找起始寫入時間距離當(dāng)前時間最近的數(shù)據(jù)隊列,或者可以查找流數(shù)據(jù)寫入線程正在寫入的數(shù)據(jù)隊列。

在本發(fā)明實施例中,優(yōu)選地,所述查找存儲有最新流數(shù)據(jù)的第一目標(biāo)數(shù)據(jù)隊列的一種實現(xiàn)方式為,提取各個數(shù)據(jù)隊列的起始寫入時間;查找起始寫入時間距離當(dāng)前時間最近的數(shù)據(jù)隊列為第一目標(biāo)數(shù)據(jù)隊列。

提取各個數(shù)據(jù)隊列的起始寫入時間,查找與當(dāng)前時間最近的起始寫入時間對應(yīng)的數(shù)據(jù)隊列,該數(shù)據(jù)隊列中存儲有最新的流數(shù)據(jù),可以作為第一目標(biāo)數(shù)據(jù)隊列。

在本發(fā)明實施例中,優(yōu)選地,所述查找存儲有最新流數(shù)據(jù)的第一目標(biāo)數(shù)據(jù)隊列的一種實現(xiàn)方式為,調(diào)用流數(shù)據(jù)讀取線程訪問流數(shù)據(jù)寫入線程;接收流數(shù)據(jù)寫入線程反饋的最新流數(shù)據(jù)的第一目標(biāo)數(shù)據(jù)隊列的隊列標(biāo)識。

具體而言,流數(shù)據(jù)讀取線程可以有多個,調(diào)用需要查找存儲有最新流數(shù)據(jù)的第一目標(biāo)數(shù)據(jù)隊列的流數(shù)據(jù)讀取線程,建立與流數(shù)據(jù)寫入線程的通信,請求流數(shù)據(jù)寫入線程反饋最新流數(shù)據(jù)的數(shù)據(jù)隊列的隊列標(biāo)識,接收流數(shù)據(jù)寫入線程反饋的最新流數(shù)據(jù)的第一目標(biāo)數(shù)據(jù)隊列的隊列標(biāo)識,以供根據(jù)隊列標(biāo)識找到對應(yīng)的第一目標(biāo)數(shù)據(jù)隊列。

在本發(fā)明實施例中,優(yōu)選地,所述方法還包括:在將流數(shù)據(jù)寫入某一數(shù)據(jù)隊列后,對設(shè)定位置記錄的最新隊列進(jìn)行更新;所述查找存儲有最新流數(shù)據(jù)的第一目標(biāo)數(shù)據(jù)隊列包括:在所述設(shè)定位置查找存儲有最新流數(shù)據(jù)的最新隊列。

具體而言,在設(shè)定位置記錄最新隊列,在流數(shù)據(jù)寫入某一數(shù)據(jù)隊列后,對記錄的最新隊列進(jìn)行更新,例如,可以根據(jù)寫入線程寫入的數(shù)據(jù)隊列,在設(shè)定位置記錄最新隊列的標(biāo)識,以供讀取線程到設(shè)定位置查找該標(biāo)識。

從記錄存儲有最新流數(shù)據(jù)的數(shù)據(jù)隊列的設(shè)定位置查找最新隊列,作為第一目標(biāo)數(shù)據(jù)隊列。

步驟204,讀取查找的第一目標(biāo)數(shù)據(jù)隊列。

從第一目標(biāo)數(shù)據(jù)隊列中讀取流數(shù)據(jù),可以從第一目標(biāo)數(shù)據(jù)隊列上當(dāng)前寫入的位置后的任意位置開始讀取流數(shù)據(jù),例如,從第一目標(biāo)數(shù)據(jù)隊列的起始位置開始讀取流數(shù)據(jù),或者從查找的最新畫面組開始讀取流數(shù)據(jù)。具體可以是第一目標(biāo)數(shù)據(jù)隊列上任意適用的位置開始讀取流數(shù)據(jù),本實施例對此不做限定。

在本發(fā)明實施例中,優(yōu)選地,在所述讀取查找的第一目標(biāo)數(shù)據(jù)隊列之前,所述從待讀取數(shù)據(jù)隊列轉(zhuǎn)向讀取流數(shù)據(jù)更新的第一目標(biāo)數(shù)據(jù)隊列還包括:查找所述第一目標(biāo)數(shù)據(jù)隊列中的最新畫面組;所述讀取查找的第一目標(biāo)數(shù)據(jù)隊列的一種實現(xiàn)方式是:在所述第一目標(biāo)數(shù)據(jù)隊列中,從所查找的最新畫面組開始讀取流數(shù)據(jù)。

具體而言,畫面組是指視頻中一組連續(xù)的畫面,本實施例中,最新畫面組為最新寫入的一組完整的畫面組,在讀取查找的第一目標(biāo)數(shù)據(jù)隊列之前,查找第一目標(biāo)數(shù)據(jù)隊列中的最新畫面組,例如,可以訪問流數(shù)據(jù)寫入線程,查找最新寫入的一組完整的畫面組。查找最新畫面組可以采用任意適用的方法,本實施例對此不做限定。

在第一目標(biāo)數(shù)據(jù)隊列中,從查找的最新畫面組開始讀取流數(shù)據(jù)。由于在視頻解碼時只能解碼完整的畫面組來播放,所以讀取最新的流數(shù)據(jù)需要從最新的一個畫面組開始。

在本發(fā)明實施例中,優(yōu)選地,在所述查找所述第一目標(biāo)數(shù)據(jù)隊列中的最新畫面組之后,包括:查找所述第一目標(biāo)數(shù)據(jù)隊列中的最新畫面組的I幀;所述在所述第一目標(biāo)數(shù)據(jù)隊列中,從所查找的最新畫面組開始讀取流數(shù)據(jù)包括:在所述第一目標(biāo)數(shù)據(jù)隊列中,從所查找的最新畫面組的I幀開始讀取流數(shù)據(jù)。

MPEG(Moving Picture Experts Group,動態(tài)圖像專家組)標(biāo)準(zhǔn)編碼將畫面(即幀)分為I、P、B三種,I是內(nèi)部編碼幀,P是前向預(yù)測幀,B是雙向內(nèi)插幀。簡單地講,I幀是一個完整的畫面,而P幀和B幀記錄的是相對于I幀的變化。沒有I幀,P幀和B幀就無法解碼。

具體而言,在查找第一目標(biāo)數(shù)據(jù)隊列中的最新畫面組之后,查找第一目標(biāo)數(shù)據(jù)隊列中最新畫面組的I幀,之后在在第一目標(biāo)數(shù)據(jù)隊列中,從所查找的最新畫面組的I幀開始讀取流數(shù)據(jù)。

綜上所述,依據(jù)本發(fā)明實施例,通過將流數(shù)據(jù)循環(huán)順次寫入由多個數(shù)據(jù)隊列構(gòu)建的存儲區(qū),從所述存儲區(qū)讀取流數(shù)據(jù)時,預(yù)估當(dāng)前寫入數(shù)據(jù)隊列之后的預(yù)備寫入數(shù)據(jù)隊列為待讀取數(shù)據(jù)隊列,查找存儲有最新流數(shù)據(jù)的第一目標(biāo)數(shù)據(jù)隊列,讀取查找的第一目標(biāo)數(shù)據(jù)隊列,使得可以通過在預(yù)估到預(yù)備寫入數(shù)據(jù)隊列為待讀取數(shù)據(jù)隊列情況下,轉(zhuǎn)向讀取流數(shù)據(jù)最新的數(shù)據(jù)隊列,防止當(dāng)前寫入數(shù)據(jù)隊列被寫滿后,轉(zhuǎn)到預(yù)備寫入數(shù)據(jù)隊列,也就是待讀取數(shù)據(jù)隊列開始寫入,避免出現(xiàn)待讀取數(shù)據(jù)隊列中的流數(shù)據(jù)被寫入操作所刪除或覆蓋的情況發(fā)生,相比通過鎖操作的方式控制并發(fā)讀寫,降低了流數(shù)據(jù)并發(fā)讀寫時的處理器資源占用,提高了流數(shù)據(jù)的并發(fā)讀寫的效率。

進(jìn)一步,轉(zhuǎn)向讀取流數(shù)據(jù)最新的數(shù)據(jù)隊列既可以滿足視頻直播應(yīng)用的直播需求,又可以使待讀取數(shù)據(jù)隊列和預(yù)備寫入數(shù)據(jù)隊列的距離最遠(yuǎn),減小了再次轉(zhuǎn)向第一目標(biāo)數(shù)據(jù)隊列讀取流數(shù)據(jù)的可能性,以使讀取的流數(shù)據(jù)可以連續(xù)不中斷,實現(xiàn)流數(shù)據(jù)的播放流暢。

參照圖3,示出了根據(jù)本發(fā)明實施例三的一種流數(shù)據(jù)的并發(fā)讀寫方法的步驟流程示意圖,具體可以包括如下步驟:

步驟301,接收從另一傳輸節(jié)點推送至當(dāng)前傳輸節(jié)點的流數(shù)據(jù)。

在本發(fā)明實施例中,一個傳輸節(jié)點可以主動或根據(jù)請求向另一個傳輸節(jié)點推送流數(shù)據(jù),接收從另一個傳輸節(jié)點推送至當(dāng)前傳輸節(jié)點的流數(shù)據(jù)。

步驟302,由流數(shù)據(jù)寫入線程將流數(shù)據(jù)循環(huán)順次寫入由多個數(shù)據(jù)隊列構(gòu)建的存儲區(qū)。

在本發(fā)明實施例中,流數(shù)據(jù)寫入線程是指傳輸節(jié)點上可以將流數(shù)據(jù)寫入存儲區(qū)建立的線程。在接收到流數(shù)據(jù)后,又流數(shù)據(jù)寫入線程將流數(shù)據(jù)循環(huán)順次寫入由多個數(shù)據(jù)隊列構(gòu)建的存儲區(qū)。

步驟303,接收從當(dāng)前傳輸節(jié)點對流數(shù)據(jù)的讀取請求。

在本發(fā)明實施例中,當(dāng)前傳輸節(jié)點對流數(shù)據(jù)的讀取請求是指在當(dāng)前傳輸節(jié)點根據(jù)流數(shù)據(jù)傳輸請求向存儲區(qū)讀取流數(shù)據(jù)的請求。接收當(dāng)前傳輸節(jié)點對流數(shù)據(jù)的讀取請求。

步驟304,由流數(shù)據(jù)讀取線程從所述存儲區(qū)讀取流數(shù)據(jù)時,預(yù)估當(dāng)前寫入數(shù)據(jù)隊列之后的預(yù)備寫入數(shù)據(jù)隊列為待讀取數(shù)據(jù)隊列。

在本發(fā)明實施例中,在流數(shù)據(jù)讀取線程從存儲區(qū)讀取流數(shù)據(jù)時,預(yù)估當(dāng)前寫入數(shù)據(jù)隊列之后的預(yù)備寫入數(shù)據(jù)隊列為待讀取數(shù)據(jù)隊列。具體實現(xiàn)方式與其他實施例描述一致,不再贅述。

步驟305,從待讀取數(shù)據(jù)隊列轉(zhuǎn)向讀取流數(shù)據(jù)更新的第一目標(biāo)數(shù)據(jù)隊列。

在本發(fā)明實施例中,優(yōu)選地,所述方法還包括:在讀取前一數(shù)據(jù)隊列時,根據(jù)最后讀取的流數(shù)據(jù)預(yù)估下一個讀取的流數(shù)據(jù);判定待讀取的下一數(shù)據(jù)隊列的第一個流數(shù)據(jù)并非預(yù)估的流數(shù)據(jù)時,從所述待讀取的下一數(shù)據(jù)隊列轉(zhuǎn)向讀取除待寫入的下一數(shù)據(jù)隊列之外的第二目標(biāo)數(shù)據(jù)隊列。

具體而言,在讀取前一數(shù)據(jù)隊列時,根據(jù)最后讀取的流數(shù)據(jù),預(yù)估下一個流數(shù)據(jù),其中預(yù)估的流數(shù)據(jù)與最后讀取的流數(shù)據(jù)可以組成連續(xù)的流數(shù)據(jù),例如,可以給每個數(shù)據(jù)隊列中存儲的流數(shù)據(jù)進(jìn)行編號,當(dāng)讀取完數(shù)據(jù)隊列的最后一個流數(shù)據(jù),預(yù)估的流數(shù)據(jù)的編號應(yīng)該是當(dāng)前正在讀取的數(shù)據(jù)隊列中流數(shù)據(jù)的編號的下一個。具體預(yù)估下一個流數(shù)據(jù)的方式可以采用任意適用的方式,本發(fā)明實施例對此不做限制。

在讀取完一個數(shù)據(jù)隊列中的流數(shù)據(jù)時,判斷下一待讀取的數(shù)據(jù)隊列中的流數(shù)據(jù)并非預(yù)估的流數(shù)據(jù)時,也就是下一數(shù)據(jù)隊列中流數(shù)據(jù)已經(jīng)被更新的流數(shù)據(jù)所覆蓋,從待讀取的下一數(shù)據(jù)隊列轉(zhuǎn)向讀取第二目標(biāo)數(shù)據(jù)隊列,其中第二目標(biāo)數(shù)據(jù)隊列為除待寫入的下一數(shù)據(jù)隊列之外的數(shù)據(jù)隊列。

例如,此時7個數(shù)據(jù)隊列中,從第1個數(shù)據(jù)隊列到第7個數(shù)據(jù)隊列,分別為其中存儲的流數(shù)據(jù)進(jìn)行編號,第1個數(shù)據(jù)隊列中存儲著第8組流數(shù)據(jù),第2個數(shù)據(jù)隊列中存儲著第9組流數(shù)據(jù),在讀取完第1個數(shù)據(jù)隊列中的第8組流數(shù)據(jù)后,預(yù)估下一個讀取的流數(shù)據(jù)為第9組流數(shù)據(jù)的第一個,如果此時第2個數(shù)據(jù)隊列中的第9組流數(shù)據(jù)被第16組流數(shù)據(jù)所覆蓋,那么判定待讀取的第2個數(shù)據(jù)隊列的第一個流數(shù)據(jù)并非預(yù)估的第9組流數(shù)據(jù)時,轉(zhuǎn)向讀取第二目標(biāo)數(shù)據(jù)隊列。

在本發(fā)明實施例中,優(yōu)選地,所述從所述待讀取的下一數(shù)據(jù)隊列轉(zhuǎn)向讀取除待寫入的下一數(shù)據(jù)隊列之外的第二目標(biāo)數(shù)據(jù)隊列包括:查找起始寫入時間距離當(dāng)前時間未超出第二時間閾值的任一第二目標(biāo)數(shù)據(jù)隊列,所述第二時間閾值為除去一個數(shù)據(jù)隊列之外其他隊列的時間長度的總和。

具體而言,每個數(shù)據(jù)隊列在寫入流數(shù)據(jù)時記錄有起始寫入時間,第二時間閾值為除去一個數(shù)據(jù)隊列之外其他隊列的時間長度的總和。例如一共有7個數(shù)據(jù)隊列,每個數(shù)據(jù)隊列中存儲有5秒的數(shù)據(jù)時長的流數(shù)據(jù),那么第二時間閾值為5乘以6等于30秒。

在讀取流數(shù)據(jù)時,判斷當(dāng)前時間減去待讀取數(shù)據(jù)隊列的起始寫入時間是否超過第二時間閾值,如果超過了第二時間閾值,那么從所述待讀取的下一數(shù)據(jù)隊列轉(zhuǎn)向讀取除待寫入的下一數(shù)據(jù)隊列之外的第二目標(biāo)數(shù)據(jù)隊列。

在本發(fā)明實施例中,優(yōu)選地,所述從所述待讀取的下一數(shù)據(jù)隊列轉(zhuǎn)向讀取除待寫入的下一數(shù)據(jù)隊列之外的第二目標(biāo)數(shù)據(jù)隊列包括:從所述待讀取的下一數(shù)據(jù)隊列轉(zhuǎn)向讀取存儲有最新流數(shù)據(jù)的第二目標(biāo)數(shù)據(jù)隊列。

具體而言,將存儲有最新流數(shù)據(jù)的數(shù)據(jù)隊列作為第二目標(biāo)數(shù)據(jù)隊列,具體查找存儲有最新流數(shù)據(jù)的數(shù)據(jù)隊列的方式可以有多種,具體采用的方式,本發(fā)明實施例對此不作限定。例如,可以查找起始寫入時間距離當(dāng)前時間最近的數(shù)據(jù)隊列,或者可以查找流數(shù)據(jù)寫入線程正在寫入的數(shù)據(jù)隊列。

從待讀取的下一數(shù)據(jù)隊列轉(zhuǎn)向讀取存儲有最新流數(shù)據(jù)的第二目標(biāo)數(shù)據(jù)隊列,可以從第二目標(biāo)數(shù)據(jù)隊列上當(dāng)前寫入的位置后的任意位置開始讀取流數(shù)據(jù),例如,從第二目標(biāo)數(shù)據(jù)隊列的起始位置開始讀取流數(shù)據(jù),或者從查找的最新畫面組開始讀取流數(shù)據(jù)。具體可以是第二目標(biāo)數(shù)據(jù)隊列上任意適用的位置開始讀取流數(shù)據(jù),本實施例對此不做限定。

在本發(fā)明實施例中,優(yōu)選地,所述由流數(shù)據(jù)讀取線程從所述存儲區(qū)讀取流數(shù)據(jù)包括:記錄當(dāng)前讀取的數(shù)據(jù)隊列的隊列標(biāo)識和流數(shù)據(jù)的位置標(biāo)識;推算下一個讀取的流數(shù)據(jù)的位置標(biāo)識和隊列標(biāo)識,并進(jìn)行讀取。

具體而言,隊列標(biāo)識是指為數(shù)據(jù)隊列設(shè)置的標(biāo)識,例如隊列編號,位置標(biāo)識是指數(shù)據(jù)隊列中為流數(shù)據(jù)存儲位置設(shè)置的標(biāo)識,例如位置編號。在流數(shù)據(jù)讀取線程從存儲區(qū)讀取流數(shù)據(jù)時,記錄當(dāng)前讀取的流數(shù)據(jù)所在數(shù)據(jù)隊列的隊列標(biāo)識,以及流數(shù)據(jù)的位置標(biāo)識。用記錄的隊列標(biāo)識和位置標(biāo)識,推算下一句讀取的流數(shù)據(jù)的位置標(biāo)識和隊列標(biāo)識,并從對應(yīng)的數(shù)據(jù)隊列的對應(yīng)的位置讀取流數(shù)據(jù)。

綜上所述,依據(jù)本發(fā)明實施例,通過接收從另一傳輸節(jié)點推送至當(dāng)前傳輸節(jié)點的流數(shù)據(jù),由流數(shù)據(jù)寫入線程將流數(shù)據(jù)循環(huán)順次寫入由多個數(shù)據(jù)隊列構(gòu)建的存儲區(qū),實現(xiàn)了將另一個傳輸節(jié)點推送的流數(shù)據(jù)寫入當(dāng)前傳輸節(jié)點的存儲區(qū),以供其他傳輸節(jié)點或客戶端從當(dāng)前傳輸節(jié)點請求時讀取。

進(jìn)一步,通過接收從當(dāng)前傳輸節(jié)點對流數(shù)據(jù)的讀取請求,由流數(shù)據(jù)讀取線程從所述存儲區(qū)讀取流數(shù)據(jù)時,預(yù)估當(dāng)前寫入數(shù)據(jù)隊列之后的預(yù)備寫入數(shù)據(jù)隊列為待讀取數(shù)據(jù)隊列,從待讀取數(shù)據(jù)隊列轉(zhuǎn)向讀取流數(shù)據(jù)更新的第一目標(biāo)數(shù)據(jù)隊列,使得可以通過在預(yù)估到預(yù)備寫入數(shù)據(jù)隊列為待讀取數(shù)據(jù)隊列情況下,轉(zhuǎn)向讀取流數(shù)據(jù)最新的數(shù)據(jù)隊列,防止當(dāng)前寫入數(shù)據(jù)隊列被寫滿后,轉(zhuǎn)到預(yù)備寫入數(shù)據(jù)隊列,也就是待讀取數(shù)據(jù)隊列開始寫入,避免出現(xiàn)待讀取數(shù)據(jù)隊列中的流數(shù)據(jù)被寫入操作所刪除或覆蓋的情況發(fā)生,相比通過鎖操作的方式控制并發(fā)讀寫,降低了流數(shù)據(jù)并發(fā)讀寫時的處理器資源占用,提高了流數(shù)據(jù)的并發(fā)讀寫的效率。

參照圖4,示出了根據(jù)本發(fā)明實施例四的一種流數(shù)據(jù)的并發(fā)讀寫裝置的結(jié)構(gòu)框圖,具體可以包括如下模塊:

流數(shù)據(jù)寫入模塊401,用于將流數(shù)據(jù)循環(huán)順次寫入由多個數(shù)據(jù)隊列構(gòu)建的存儲區(qū);

預(yù)估模塊402,用于從所述存儲區(qū)讀取流數(shù)據(jù)時,預(yù)估當(dāng)前寫入數(shù)據(jù)隊列之后的預(yù)備寫入數(shù)據(jù)隊列為待讀取數(shù)據(jù)隊列;

第一隊列讀取模塊403,用于從待讀取數(shù)據(jù)隊列轉(zhuǎn)向讀取流數(shù)據(jù)更新的第一目標(biāo)數(shù)據(jù)隊列。

優(yōu)選地,所述流數(shù)據(jù)寫入模塊,具體用于順次向各個數(shù)據(jù)隊列寫入設(shè)定的數(shù)據(jù)時長的流數(shù)據(jù)。

優(yōu)選地,所述預(yù)估模塊包括:

第一判斷子模塊,用于判斷當(dāng)前時間距離待讀取數(shù)據(jù)隊列的起始寫入時間是否超出第一時間閾值;

第一確定子模塊,用于若是,則確定當(dāng)前寫入數(shù)據(jù)隊列之后的預(yù)備寫入數(shù)據(jù)隊列可能為待讀取數(shù)據(jù)隊列,所述第一時間閾值為除去一個數(shù)據(jù)隊列之外其他隊列的時間長度的總和。

優(yōu)選地,所述第一隊列讀取模塊包括:

第一查找子模塊,用于查找存儲有最新流數(shù)據(jù)的第一目標(biāo)數(shù)據(jù)隊列;

第一讀取子模塊,讀取查找的第一目標(biāo)數(shù)據(jù)隊列。

優(yōu)選地,所述第一查找子模塊包括:

寫入時間提取子單元,用于提取各個數(shù)據(jù)隊列的起始寫入時間;

第一查找子單元,用于查找起始寫入時間距離當(dāng)前時間最近的數(shù)據(jù)隊列為第一目標(biāo)數(shù)據(jù)隊列。

優(yōu)選地,所述第一查找子模塊包括:

寫入線程調(diào)用子單元,用于調(diào)用流數(shù)據(jù)讀取線程訪問流數(shù)據(jù)寫入線程;

隊列標(biāo)識接收子單元,接收流數(shù)據(jù)寫入線程反饋的最新流數(shù)據(jù)的第一目標(biāo)數(shù)據(jù)隊列的隊列標(biāo)識。

優(yōu)選地,所述裝置還包括:

最新隊列更新模塊,用于在將流數(shù)據(jù)寫入某一數(shù)據(jù)隊列后,對設(shè)定位置記錄的最新隊列進(jìn)行更新;

所述第一查找子模塊,具體用于在所述設(shè)定位置查找存儲有最新流數(shù)據(jù)的最新隊列。

優(yōu)選地,所述第一隊列讀取模塊還包括:

畫面組查找子單元,用于在所述讀取查找的第一目標(biāo)數(shù)據(jù)隊列之前,查找所述第一目標(biāo)數(shù)據(jù)隊列中的最新畫面組;

所述第一讀取子模塊,具體用于在所述第一目標(biāo)數(shù)據(jù)隊列中,從所查找的最新畫面組開始讀取流數(shù)據(jù)。

優(yōu)選地,所述裝置還包括:

幀查找子模塊,用于在所述查找所述第一目標(biāo)數(shù)據(jù)隊列中的最新畫面組之后,查找所述第一目標(biāo)數(shù)據(jù)隊列中的最新畫面組的I幀;

所述第一讀取子模塊,具體用于在所述第一目標(biāo)數(shù)據(jù)隊列中,從所查找的最新畫面組的I幀開始讀取流數(shù)據(jù)。

優(yōu)選地,所述裝置還包括:

流數(shù)據(jù)預(yù)估模塊,用于在讀取前一數(shù)據(jù)隊列時,根據(jù)最后讀取的流數(shù)據(jù)預(yù)估下一個讀取的流數(shù)據(jù);

第二隊列讀取模塊,用于判定待讀取的下一數(shù)據(jù)隊列的第一個流數(shù)據(jù)并非預(yù)估的流數(shù)據(jù)時,從所述待讀取的下一數(shù)據(jù)隊列轉(zhuǎn)向讀取除待寫入的下一數(shù)據(jù)隊列之外的第二目標(biāo)數(shù)據(jù)隊列。

優(yōu)選地,所述第二隊列讀取模塊包括:

第二查找子單元,用于查找起始寫入時間距離當(dāng)前時間未超出第二時間閾值的任一第二目標(biāo)數(shù)據(jù)隊列,所述第二時間閾值為除去一個數(shù)據(jù)隊列之外其他隊列的時間長度的總和。

優(yōu)選地,所述第二隊列讀取模塊,具體用于從所述待讀取的下一數(shù)據(jù)隊列轉(zhuǎn)向讀取存儲有最新流數(shù)據(jù)的第二目標(biāo)數(shù)據(jù)隊列。

優(yōu)選地,所述裝置還包括:

流數(shù)據(jù)接收模塊,用于在所述將流數(shù)據(jù)循環(huán)順次寫入由多個數(shù)據(jù)隊列構(gòu)建的存儲區(qū)之前,接收從另一傳輸節(jié)點推送至當(dāng)前傳輸節(jié)點的流數(shù)據(jù);

所述裝置還包括:

讀取請求接收模塊,用于在所述從所述存儲區(qū)讀取流數(shù)據(jù)之前,接收從當(dāng)前傳輸節(jié)點對流數(shù)據(jù)的讀取請求。

優(yōu)選地,所述流數(shù)據(jù)寫入模塊,具體用于由流數(shù)據(jù)寫入線程將流數(shù)據(jù)循環(huán)順次寫入由多個數(shù)據(jù)隊列構(gòu)建的存儲區(qū);

所述預(yù)估模塊包括:

線程讀取子模塊,用于由流數(shù)據(jù)讀取線程從所述存儲區(qū)讀取流數(shù)據(jù)。

優(yōu)選地,所述線程讀取子模塊包括:

標(biāo)識記錄子單元,用于記錄當(dāng)前讀取的數(shù)據(jù)隊列的隊列標(biāo)識和流數(shù)據(jù)的位置標(biāo)識;

推算與讀取子單元,用于推算下一個讀取的流數(shù)據(jù)的位置標(biāo)識和隊列標(biāo)識,并進(jìn)行讀取。

優(yōu)選地,所述預(yù)估模塊包括:

順次讀取子模塊,用于按照數(shù)據(jù)隊列的隊列標(biāo)識順次從各個數(shù)據(jù)隊列讀取流數(shù)據(jù)。

綜上所述,依據(jù)本發(fā)明實施例,通過將流數(shù)據(jù)循環(huán)順次寫入由多個數(shù)據(jù)隊列構(gòu)建的存儲區(qū),從所述存儲區(qū)讀取流數(shù)據(jù)時,預(yù)估當(dāng)前寫入數(shù)據(jù)隊列之后的預(yù)備寫入數(shù)據(jù)隊列為待讀取數(shù)據(jù)隊列,從待讀取數(shù)據(jù)隊列轉(zhuǎn)向讀取流數(shù)據(jù)更新的第一目標(biāo)數(shù)據(jù)隊列,使得可以通過在預(yù)估到預(yù)備寫入數(shù)據(jù)隊列為待讀取數(shù)據(jù)隊列情況下,轉(zhuǎn)向讀取流數(shù)據(jù)更新的數(shù)據(jù)隊列,防止當(dāng)前寫入數(shù)據(jù)隊列被寫滿后,轉(zhuǎn)到預(yù)備寫入數(shù)據(jù)隊列,也就是待讀取數(shù)據(jù)隊列開始寫入,避免出現(xiàn)待讀取數(shù)據(jù)隊列中的流數(shù)據(jù)被寫入操作所刪除或覆蓋的情況發(fā)生,相比通過鎖操作的方式控制并發(fā)讀寫,降低了流數(shù)據(jù)并發(fā)讀寫時的處理器資源占用,提高了流數(shù)據(jù)的并發(fā)讀寫的效率。

在此提供的算法和顯示不與任何特定計算機、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應(yīng)當(dāng)明白,可以利用各種編程語言實現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實施方式。

在此處所提供的說明書中,說明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實施例可以在沒有這些具體細(xì)節(jié)的情況下實踐。在一些實例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對本說明書的理解。

類似地,應(yīng)當(dāng)理解,為了精簡本公開并幫助理解各個發(fā)明方面中的一個或多個,在上面對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實施例的所有特征。因此,遵循具體實施方式的權(quán)利要求書由此明確地并入該具體實施方式,其中每個權(quán)利要求本身都作為本發(fā)明的單獨實施例。

本領(lǐng)域那些技術(shù)人員可以理解,可以對實施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們設(shè)置在與該實施例不同的一個或多個設(shè)備中??梢园褜嵤├械哪K或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進(jìn)行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。

此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實施例。例如,在下面的權(quán)利要求書中,所要求保護(hù)的實施例的任意之一都可以以任意的組合方式來使用。

本發(fā)明的各個部件實施例可以以硬件實現(xiàn),或者以在一個或者多個處理器上運行的軟件模塊實現(xiàn),或者以它們的組合實現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實踐中使用微處理器或者數(shù)字信號處理器(DSP)來實現(xiàn)根據(jù)本發(fā)明實施例的一種流數(shù)據(jù)的并發(fā)讀寫方法和裝置中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計算機程序和計算機程序產(chǎn)品)。這樣的實現(xiàn)本發(fā)明的程序可以存儲在計算機可讀介質(zhì)上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。

應(yīng)該注意的是上述實施例對本發(fā)明進(jìn)行說明而不是對本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計出替換實施例。在權(quán)利要求中,不應(yīng)將位于括號之間的任何參考符號構(gòu)造成對權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計算機來實現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。

本發(fā)明還公開了A1、一種流數(shù)據(jù)的并發(fā)讀寫方法,包括:

將流數(shù)據(jù)循環(huán)順次寫入由多個數(shù)據(jù)隊列構(gòu)建的存儲區(qū);

從所述存儲區(qū)讀取流數(shù)據(jù)時,預(yù)估當(dāng)前寫入數(shù)據(jù)隊列之后的預(yù)備寫入數(shù)據(jù)隊列為待讀取數(shù)據(jù)隊列;

從待讀取數(shù)據(jù)隊列轉(zhuǎn)向讀取流數(shù)據(jù)更新的第一目標(biāo)數(shù)據(jù)隊列。

A2、根據(jù)A1所述的方法,其中,所述將流數(shù)據(jù)循環(huán)順次寫入由多個數(shù)據(jù)隊列構(gòu)建的存儲區(qū)包括:

順次向各個數(shù)據(jù)隊列寫入設(shè)定的數(shù)據(jù)時長的流數(shù)據(jù)。

A3、根據(jù)A2所述的方法,其中,所述預(yù)估當(dāng)前寫入數(shù)據(jù)隊列之后的預(yù)備寫入數(shù)據(jù)隊列為待讀取數(shù)據(jù)隊列包括:

判斷當(dāng)前時間距離待讀取數(shù)據(jù)隊列的起始寫入時間是否超出第一時間閾值;

若是,則確定當(dāng)前寫入數(shù)據(jù)隊列之后的預(yù)備寫入數(shù)據(jù)隊列可能為待讀取數(shù)據(jù)隊列,所述第一時間閾值為除去一個數(shù)據(jù)隊列之外其他隊列的時間長度的總和。

A4、根據(jù)A1所述的方法,其中,所述從待讀取數(shù)據(jù)隊列轉(zhuǎn)向讀取流數(shù)據(jù)更新的第一目標(biāo)數(shù)據(jù)隊列包括:

查找存儲有最新流數(shù)據(jù)的第一目標(biāo)數(shù)據(jù)隊列;

讀取查找的第一目標(biāo)數(shù)據(jù)隊列。

A5、根據(jù)A4所述的方法,其中,所述查找存儲有最新流數(shù)據(jù)的第一目標(biāo)數(shù)據(jù)隊列包括:

提取各個數(shù)據(jù)隊列的起始寫入時間;

查找起始寫入時間距離當(dāng)前時間最近的數(shù)據(jù)隊列為第一目標(biāo)數(shù)據(jù)隊列。

A6、根據(jù)A4所述的方法,其中,所述查找存儲有最新流數(shù)據(jù)的第一目標(biāo)數(shù)據(jù)隊列包括:

調(diào)用流數(shù)據(jù)讀取線程訪問流數(shù)據(jù)寫入線程;

接收流數(shù)據(jù)寫入線程反饋的最新流數(shù)據(jù)的第一目標(biāo)數(shù)據(jù)隊列的隊列標(biāo)識。

A7、根據(jù)A4所述的方法,其中,所述方法還包括:

在將流數(shù)據(jù)寫入某一數(shù)據(jù)隊列后,對設(shè)定位置記錄的最新隊列進(jìn)行更新;

所述查找存儲有最新流數(shù)據(jù)的第一目標(biāo)數(shù)據(jù)隊列包括:

在所述設(shè)定位置查找存儲有最新流數(shù)據(jù)的最新隊列。

A8、根據(jù)A4所述的方法,其中,在所述讀取查找的第一目標(biāo)數(shù)據(jù)隊列之前,所述從待讀取數(shù)據(jù)隊列轉(zhuǎn)向讀取流數(shù)據(jù)更新的第一目標(biāo)數(shù)據(jù)隊列還包括:

查找所述第一目標(biāo)數(shù)據(jù)隊列中的最新畫面組;

所述讀取查找的第一目標(biāo)數(shù)據(jù)隊列包括:

在所述第一目標(biāo)數(shù)據(jù)隊列中,從所查找的最新畫面組開始讀取流數(shù)據(jù)。

A9、根據(jù)A8所述的方法,其中,在所述查找所述第一目標(biāo)數(shù)據(jù)隊列中的最新畫面組之后,包括:

查找所述第一目標(biāo)數(shù)據(jù)隊列中的最新畫面組的I幀;

所述在所述第一目標(biāo)數(shù)據(jù)隊列中,從所查找的最新畫面組開始讀取流數(shù)據(jù)包括:

在所述第一目標(biāo)數(shù)據(jù)隊列中,從所查找的最新畫面組的I幀開始讀取流數(shù)據(jù)。

A10、根據(jù)A1所述的方法,其中,所述方法還包括:

在讀取前一數(shù)據(jù)隊列時,根據(jù)最后讀取的流數(shù)據(jù)預(yù)估下一個讀取的流數(shù)據(jù);

判定待讀取的下一數(shù)據(jù)隊列的第一個流數(shù)據(jù)并非預(yù)估的流數(shù)據(jù)時,從所述待讀取的下一數(shù)據(jù)隊列轉(zhuǎn)向讀取除待寫入的下一數(shù)據(jù)隊列之外的第二目標(biāo)數(shù)據(jù)隊列。

A11、根據(jù)A10所述的方法,其中,所述從所述待讀取的下一數(shù)據(jù)隊列轉(zhuǎn)向讀取除待寫入的下一數(shù)據(jù)隊列之外的第二目標(biāo)數(shù)據(jù)隊列包括:

查找起始寫入時間距離當(dāng)前時間未超出第二時間閾值的任一第二目標(biāo)數(shù)據(jù)隊列,所述第二時間閾值為除去一個數(shù)據(jù)隊列之外其他隊列的時間長度的總和。

A12、根據(jù)A10所述的方法,其中,所述從所述待讀取的下一數(shù)據(jù)隊列轉(zhuǎn)向讀取除待寫入的下一數(shù)據(jù)隊列之外的第二目標(biāo)數(shù)據(jù)隊列包括:

從所述待讀取的下一數(shù)據(jù)隊列轉(zhuǎn)向讀取存儲有最新流數(shù)據(jù)的第二目標(biāo)數(shù)據(jù)隊列。

A13、根據(jù)A1所述的方法,其中,在所述將流數(shù)據(jù)循環(huán)順次寫入由多個數(shù)據(jù)隊列構(gòu)建的存儲區(qū)之前,所述方法還包括:

接收從另一傳輸節(jié)點推送至當(dāng)前傳輸節(jié)點的流數(shù)據(jù);

在所述從所述存儲區(qū)讀取流數(shù)據(jù)之前,所述方法還包括:

接收從當(dāng)前傳輸節(jié)點對流數(shù)據(jù)的讀取請求。

A14、根據(jù)A1所述的方法,其中,所述將流數(shù)據(jù)循環(huán)順次寫入由多個數(shù)據(jù)隊列構(gòu)建的存儲區(qū)包括:

由流數(shù)據(jù)寫入線程將流數(shù)據(jù)循環(huán)順次寫入由多個數(shù)據(jù)隊列構(gòu)建的存儲區(qū);

所述從所述存儲區(qū)讀取流數(shù)據(jù)包括:

由流數(shù)據(jù)讀取線程從所述存儲區(qū)讀取流數(shù)據(jù)。

A15、根據(jù)A14所述的方法,其中,所述由流數(shù)據(jù)讀取線程從所述存儲區(qū)讀取流數(shù)據(jù)包括:

記錄當(dāng)前讀取的數(shù)據(jù)隊列的隊列標(biāo)識和流數(shù)據(jù)的位置標(biāo)識;

推算下一個讀取的流數(shù)據(jù)的位置標(biāo)識和隊列標(biāo)識,并進(jìn)行讀取。

A16、根據(jù)A1所述的方法,其中,所述從所述存儲區(qū)讀取流數(shù)據(jù)包括:

按照數(shù)據(jù)隊列的隊列標(biāo)識順次從各個數(shù)據(jù)隊列讀取流數(shù)據(jù)。

本發(fā)明還公開了B17、一種流數(shù)據(jù)的并發(fā)讀寫裝置,包括:

流數(shù)據(jù)寫入模塊,用于將流數(shù)據(jù)循環(huán)順次寫入由多個數(shù)據(jù)隊列構(gòu)建的存儲區(qū);

預(yù)估模塊,用于從所述存儲區(qū)讀取流數(shù)據(jù)時,預(yù)估當(dāng)前寫入數(shù)據(jù)隊列之后的預(yù)備寫入數(shù)據(jù)隊列為待讀取數(shù)據(jù)隊列;

第一隊列讀取模塊,用于從待讀取數(shù)據(jù)隊列轉(zhuǎn)向讀取流數(shù)據(jù)更新的第一目標(biāo)數(shù)據(jù)隊列。

B18、根據(jù)B17所述的裝置,其中,所述流數(shù)據(jù)寫入模塊,具體用于順次向各個數(shù)據(jù)隊列寫入設(shè)定的數(shù)據(jù)時長的流數(shù)據(jù)。

B19、根據(jù)B18所述的裝置,其中,所述預(yù)估模塊包括:

第一判斷子模塊,用于判斷當(dāng)前時間距離待讀取數(shù)據(jù)隊列的起始寫入時間是否超出第一時間閾值;

第一確定子模塊,用于若是,則確定當(dāng)前寫入數(shù)據(jù)隊列之后的預(yù)備寫入數(shù)據(jù)隊列可能為待讀取數(shù)據(jù)隊列,所述第一時間閾值為除去一個數(shù)據(jù)隊列之外其他隊列的時間長度的總和。

B20、根據(jù)B17所述的裝置,其中,所述第一隊列讀取模塊包括:

第一查找子模塊,用于查找存儲有最新流數(shù)據(jù)的第一目標(biāo)數(shù)據(jù)隊列;

第一讀取子模塊,讀取查找的第一目標(biāo)數(shù)據(jù)隊列。

B21、根據(jù)B20所述的裝置,其中,所述第一查找子模塊包括:

寫入時間提取子單元,用于提取各個數(shù)據(jù)隊列的起始寫入時間;

第一查找子單元,用于查找起始寫入時間距離當(dāng)前時間最近的數(shù)據(jù)隊列為第一目標(biāo)數(shù)據(jù)隊列。

B22、根據(jù)B20所述的裝置,其中,所述第一查找子模塊包括:

寫入線程調(diào)用子單元,用于調(diào)用流數(shù)據(jù)讀取線程訪問流數(shù)據(jù)寫入線程;

隊列標(biāo)識接收子單元,接收流數(shù)據(jù)寫入線程反饋的最新流數(shù)據(jù)的第一目標(biāo)數(shù)據(jù)隊列的隊列標(biāo)識。

B23、根據(jù)B20所述的裝置,其中,所述裝置還包括:

最新隊列更新模塊,用于在將流數(shù)據(jù)寫入某一數(shù)據(jù)隊列后,對設(shè)定位置記錄的最新隊列進(jìn)行更新;

所述第一查找子模塊,具體用于在所述設(shè)定位置查找存儲有最新流數(shù)據(jù)的最新隊列。

B24、根據(jù)B20所述的裝置,其中,所述第一隊列讀取模塊還包括:

畫面組查找子單元,用于在所述讀取查找的第一目標(biāo)數(shù)據(jù)隊列之前,查找所述第一目標(biāo)數(shù)據(jù)隊列中的最新畫面組;

所述第一讀取子模塊,具體用于在所述第一目標(biāo)數(shù)據(jù)隊列中,從所查找的最新畫面組開始讀取流數(shù)據(jù)。

B25、根據(jù)B24所述的裝置,其中,所述裝置還包括:

幀查找子模塊,用于在所述查找所述第一目標(biāo)數(shù)據(jù)隊列中的最新畫面組之后,查找所述第一目標(biāo)數(shù)據(jù)隊列中的最新畫面組的I幀;

所述第一讀取子模塊,具體用于在所述第一目標(biāo)數(shù)據(jù)隊列中,從所查找的最新畫面組的I幀開始讀取流數(shù)據(jù)。

B26、根據(jù)B17所述的裝置,其中,所述裝置還包括:

流數(shù)據(jù)預(yù)估模塊,用于在讀取前一數(shù)據(jù)隊列時,根據(jù)最后讀取的流數(shù)據(jù)預(yù)估下一個讀取的流數(shù)據(jù);

第二隊列讀取模塊,用于判定待讀取的下一數(shù)據(jù)隊列的第一個流數(shù)據(jù)并非預(yù)估的流數(shù)據(jù)時,從所述待讀取的下一數(shù)據(jù)隊列轉(zhuǎn)向讀取除待寫入的下一數(shù)據(jù)隊列之外的第二目標(biāo)數(shù)據(jù)隊列。

B27、根據(jù)B26所述的裝置,其中,所述第二隊列讀取模塊包括:

第二查找子單元,用于查找起始寫入時間距離當(dāng)前時間未超出第二時間閾值的任一第二目標(biāo)數(shù)據(jù)隊列,所述第二時間閾值為除去一個數(shù)據(jù)隊列之外其他隊列的時間長度的總和。

B28、根據(jù)B26所述的裝置,其中,所述第二隊列讀取模塊,具體用于從所述待讀取的下一數(shù)據(jù)隊列轉(zhuǎn)向讀取存儲有最新流數(shù)據(jù)的第二目標(biāo)數(shù)據(jù)隊列。

B29、根據(jù)B17所述的裝置,其中,所述裝置還包括:

流數(shù)據(jù)接收模塊,用于在所述將流數(shù)據(jù)循環(huán)順次寫入由多個數(shù)據(jù)隊列構(gòu)建的存儲區(qū)之前,接收從另一傳輸節(jié)點推送至當(dāng)前傳輸節(jié)點的流數(shù)據(jù);

所述裝置還包括:

讀取請求接收模塊,用于在所述從所述存儲區(qū)讀取流數(shù)據(jù)之前,接收從當(dāng)前傳輸節(jié)點對流數(shù)據(jù)的讀取請求。

B30、根據(jù)B17所述的裝置,其中,所述流數(shù)據(jù)寫入模塊,具體用于由流數(shù)據(jù)寫入線程將流數(shù)據(jù)循環(huán)順次寫入由多個數(shù)據(jù)隊列構(gòu)建的存儲區(qū);

所述預(yù)估模塊包括:

線程讀取子模塊,用于由流數(shù)據(jù)讀取線程從所述存儲區(qū)讀取流數(shù)據(jù)。

B31、根據(jù)B30所述的裝置,其中,所述線程讀取子模塊包括:

標(biāo)識記錄子單元,用于記錄當(dāng)前讀取的數(shù)據(jù)隊列的隊列標(biāo)識和流數(shù)據(jù)的位置標(biāo)識;

推算與讀取子單元,用于推算下一個讀取的流數(shù)據(jù)的位置標(biāo)識和隊列標(biāo)識,并進(jìn)行讀取。

B32、根據(jù)B17所述的裝置,其中,所述預(yù)估模塊包括:

順次讀取子模塊,用于按照數(shù)據(jù)隊列的隊列標(biāo)識順次從各個數(shù)據(jù)隊列讀取流數(shù)據(jù)。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
亚洲欧美一区二区三区黑人 | 成年av动漫网址| 毛片一级片免费看久久久久| 在线观看国产h片| 国产精品亚洲av一区麻豆 | 九草在线视频观看| 两个人免费观看高清视频| 成人午夜精彩视频在线观看| 欧美97在线视频| 国产免费又黄又爽又色| 久久狼人影院| h视频一区二区三区| 午夜免费观看性视频| 日韩欧美一区视频在线观看| 国产一区二区激情短视频 | 亚洲精品中文字幕在线视频| 不卡av一区二区三区| 久久精品国产综合久久久| 精品少妇久久久久久888优播| 国产人伦9x9x在线观看 | 丝瓜视频免费看黄片| 蜜桃国产av成人99| 久久精品久久久久久久性| 在线观看www视频免费| 在线亚洲精品国产二区图片欧美| 国产乱来视频区| 亚洲精品中文字幕在线视频| 韩国精品一区二区三区| 亚洲图色成人| 久久久久久久国产电影| www.自偷自拍.com| 日韩欧美一区视频在线观看| 午夜福利,免费看| 亚洲中文av在线| 在线看a的网站| 国产成人精品久久久久久| 久久久久久久久久久免费av| 国产白丝娇喘喷水9色精品| 大陆偷拍与自拍| 成人毛片60女人毛片免费| 久久99精品国语久久久| 成人亚洲精品一区在线观看| 国产一区二区激情短视频 | 熟妇人妻不卡中文字幕| 新久久久久国产一级毛片| 午夜免费观看性视频| 日韩,欧美,国产一区二区三区| 欧美+日韩+精品| 国产有黄有色有爽视频| 一级毛片黄色毛片免费观看视频| av有码第一页| 亚洲久久久国产精品| 最近中文字幕2019免费版| 视频在线观看一区二区三区| 亚洲欧美成人综合另类久久久| 成年人免费黄色播放视频| 免费看不卡的av| 久久久久久久久久人人人人人人| 久久精品国产亚洲av涩爱| 最近中文字幕2019免费版| 国产黄色免费在线视频| 最新中文字幕久久久久| 视频区图区小说| 久久久久久伊人网av| 亚洲精品国产一区二区精华液| 国产精品 欧美亚洲| 美女xxoo啪啪120秒动态图| 久久 成人 亚洲| 精品国产国语对白av| 欧美日韩国产mv在线观看视频| 免费av中文字幕在线| 国产精品免费大片| 国产精品欧美亚洲77777| 久久99热这里只频精品6学生| 国产精品久久久久久av不卡| 高清欧美精品videossex| a级毛片黄视频| 亚洲精品日本国产第一区| 自线自在国产av| 精品一品国产午夜福利视频| 亚洲国产日韩一区二区| 天堂中文最新版在线下载| 亚洲精品,欧美精品| 一本—道久久a久久精品蜜桃钙片| 香蕉丝袜av| 国产精品无大码| 美女脱内裤让男人舔精品视频| 人体艺术视频欧美日本| 久久99一区二区三区| 亚洲精品久久久久久婷婷小说| 日本wwww免费看| 91久久精品国产一区二区三区| 熟女少妇亚洲综合色aaa.| 91精品伊人久久大香线蕉| 久久久久精品性色| 国产片特级美女逼逼视频| 国产亚洲一区二区精品| 日日啪夜夜爽| 赤兔流量卡办理| 深夜精品福利| 亚洲第一区二区三区不卡| 婷婷色麻豆天堂久久| 桃花免费在线播放| 黄色怎么调成土黄色| a级毛片黄视频| 久热久热在线精品观看| 波多野结衣av一区二区av| 久久亚洲国产成人精品v| 最近中文字幕2019免费版| 黄片无遮挡物在线观看| 久久久精品国产亚洲av高清涩受| 99热国产这里只有精品6| 狂野欧美激情性bbbbbb| 久久人人97超碰香蕉20202| 少妇的逼水好多| 在线看a的网站| 十分钟在线观看高清视频www| 国产亚洲最大av| 亚洲国产欧美网| 飞空精品影院首页| 久久毛片免费看一区二区三区| 看十八女毛片水多多多| 成人毛片a级毛片在线播放| 日韩伦理黄色片| 在线观看国产h片| 九色亚洲精品在线播放| 波多野结衣av一区二区av| 久久av网站| 精品福利永久在线观看| 国产国语露脸激情在线看| 国产成人av激情在线播放| 国产精品99久久99久久久不卡 | 又黄又粗又硬又大视频| 天天躁夜夜躁狠狠躁躁| 亚洲精品一二三| 亚洲国产精品一区二区三区在线| 汤姆久久久久久久影院中文字幕| 亚洲国产av新网站| 久久久久人妻精品一区果冻| 我要看黄色一级片免费的| 在线亚洲精品国产二区图片欧美| 一区二区日韩欧美中文字幕| 伦理电影大哥的女人| 满18在线观看网站| 成人国产麻豆网| www.精华液| 欧美日韩国产mv在线观看视频| 国产精品一二三区在线看| 欧美av亚洲av综合av国产av | 亚洲中文av在线| 欧美人与性动交α欧美精品济南到 | 精品人妻熟女毛片av久久网站| 成人毛片60女人毛片免费| 少妇人妻久久综合中文| 亚洲色图综合在线观看| 性色av一级| 国产成人一区二区在线| 中文字幕另类日韩欧美亚洲嫩草| 青草久久国产| 在线观看三级黄色| 热re99久久国产66热| 999精品在线视频| 日本黄色日本黄色录像| 欧美日韩成人在线一区二区| 亚洲av福利一区| 午夜福利影视在线免费观看| 亚洲美女搞黄在线观看| 天堂俺去俺来也www色官网| 18+在线观看网站| 久久免费观看电影| 午夜久久久在线观看| 成年人午夜在线观看视频| 97在线人人人人妻| 国产免费现黄频在线看| av福利片在线| 卡戴珊不雅视频在线播放| 亚洲精品在线美女| 亚洲精华国产精华液的使用体验| 18+在线观看网站| 丝袜人妻中文字幕| 熟女少妇亚洲综合色aaa.| 免费日韩欧美在线观看| videos熟女内射| 亚洲经典国产精华液单| 如日韩欧美国产精品一区二区三区| 亚洲欧洲精品一区二区精品久久久 | 久久女婷五月综合色啪小说| 亚洲精品,欧美精品| 黄片播放在线免费| 亚洲成人一二三区av| 久久精品国产亚洲av涩爱| 日本色播在线视频| 精品久久蜜臀av无| 最近手机中文字幕大全| av在线app专区| 日韩免费高清中文字幕av| 一级毛片 在线播放| 一区二区三区四区激情视频| 另类精品久久| 少妇的逼水好多| 国产黄频视频在线观看| 精品第一国产精品| 欧美精品亚洲一区二区| 一级爰片在线观看| 狠狠婷婷综合久久久久久88av| 伊人亚洲综合成人网| 在线观看三级黄色| av不卡在线播放| 丝袜喷水一区| 人体艺术视频欧美日本| 观看av在线不卡| 久久人人爽av亚洲精品天堂| 三级国产精品片| 人人妻人人爽人人添夜夜欢视频| 天天操日日干夜夜撸| 日韩av免费高清视频| 欧美精品亚洲一区二区| 国产精品麻豆人妻色哟哟久久| 日韩熟女老妇一区二区性免费视频| 大香蕉久久成人网| 天堂8中文在线网| tube8黄色片| 亚洲欧美色中文字幕在线| 欧美日韩一区二区视频在线观看视频在线| 少妇被粗大猛烈的视频| av天堂久久9| 青春草国产在线视频| 亚洲精品一二三| 如日韩欧美国产精品一区二区三区| 日韩一卡2卡3卡4卡2021年| tube8黄色片| 午夜福利在线观看免费完整高清在| 国产精品无大码| 人人澡人人妻人| 黄网站色视频无遮挡免费观看| 亚洲欧美成人精品一区二区| 永久免费av网站大全| 大码成人一级视频| 丝袜脚勾引网站| 成年动漫av网址| 免费人妻精品一区二区三区视频| 在线观看国产h片| 久热久热在线精品观看| 国产成人精品在线电影| 亚洲一级一片aⅴ在线观看| 91精品国产国语对白视频| 精品人妻一区二区三区麻豆| 国产男女超爽视频在线观看| 99久久中文字幕三级久久日本| 中文字幕av电影在线播放| 亚洲美女搞黄在线观看| 久久久久精品人妻al黑| av福利片在线| 日韩欧美精品免费久久| 中文字幕制服av| 日韩视频在线欧美| 国产精品av久久久久免费| 熟女少妇亚洲综合色aaa.| 侵犯人妻中文字幕一二三四区| 少妇的逼水好多| 中文天堂在线官网| 久久人人爽av亚洲精品天堂| 婷婷成人精品国产| 老司机影院毛片| 成年女人毛片免费观看观看9 | 丰满少妇做爰视频| 免费黄网站久久成人精品| 成年女人在线观看亚洲视频| 亚洲成人av在线免费| 成人毛片a级毛片在线播放| 欧美人与性动交α欧美精品济南到 | 精品一区在线观看国产| 亚洲四区av| 精品亚洲成国产av| 美女大奶头黄色视频| 久久ye,这里只有精品| 在线免费观看不下载黄p国产| 欧美97在线视频| 欧美精品一区二区免费开放| 综合色丁香网| 妹子高潮喷水视频| 一本一本久久a久久精品综合妖精 国产伦在线观看视频一区 | 精品一区二区免费观看| 国产精品久久久久久av不卡| 香蕉精品网在线| 人人妻人人澡人人爽人人夜夜| 一级片免费观看大全| 97在线视频观看| 在线 av 中文字幕| 午夜福利一区二区在线看| 婷婷色麻豆天堂久久| 久久精品久久精品一区二区三区| 最近的中文字幕免费完整| 99久久人妻综合| 黄色配什么色好看| 久久99精品国语久久久| 亚洲五月色婷婷综合| 欧美激情 高清一区二区三区| av在线观看视频网站免费| 亚洲国产精品一区三区| 丝袜在线中文字幕| 伦理电影大哥的女人| 久久久精品国产亚洲av高清涩受| 国产精品久久久久久av不卡| 丝瓜视频免费看黄片| 90打野战视频偷拍视频| 一级片'在线观看视频| 下体分泌物呈黄色| 久久毛片免费看一区二区三区| 1024视频免费在线观看| 日本av手机在线免费观看| 18禁观看日本| 亚洲欧美精品自产自拍| 欧美精品国产亚洲| 亚洲精品日本国产第一区| 国产午夜精品一二区理论片| 中文字幕另类日韩欧美亚洲嫩草| 日韩中文字幕视频在线看片| 午夜激情av网站| 日韩,欧美,国产一区二区三区| 国产精品偷伦视频观看了| 亚洲,一卡二卡三卡| 老女人水多毛片| 成人毛片60女人毛片免费| 日本猛色少妇xxxxx猛交久久| 一级a爱视频在线免费观看| 日韩欧美一区视频在线观看| 午夜av观看不卡| 一本久久精品| 青春草视频在线免费观看| 亚洲精品日韩在线中文字幕| 久久97久久精品| 欧美在线黄色| 午夜日本视频在线| 亚洲婷婷狠狠爱综合网| 欧美精品高潮呻吟av久久| 一级,二级,三级黄色视频| 久久精品久久精品一区二区三区| 久久人人97超碰香蕉20202| 久久精品国产亚洲av高清一级| 夫妻午夜视频| 在线亚洲精品国产二区图片欧美| 久久女婷五月综合色啪小说| 边亲边吃奶的免费视频| av片东京热男人的天堂| 国产老妇伦熟女老妇高清| 两个人免费观看高清视频| 成人黄色视频免费在线看| 我要看黄色一级片免费的| a级片在线免费高清观看视频| 寂寞人妻少妇视频99o| 日韩伦理黄色片| 黄色视频在线播放观看不卡| 久久毛片免费看一区二区三区| 久久精品久久久久久噜噜老黄| 高清不卡的av网站| 91成人精品电影| 永久免费av网站大全| 一区二区三区四区激情视频| 在线观看免费视频网站a站| 国产欧美日韩综合在线一区二区| av国产久精品久网站免费入址| 亚洲成人一二三区av| 亚洲中文av在线| 亚洲精品国产一区二区精华液| 国产精品久久久久久av不卡| 亚洲国产看品久久| 久久免费观看电影| 国产成人a∨麻豆精品| 中文字幕人妻熟女乱码| 一级毛片我不卡| 天天影视国产精品| 午夜av观看不卡| 亚洲国产精品成人久久小说| 精品人妻熟女毛片av久久网站| 国产97色在线日韩免费| 丰满饥渴人妻一区二区三| 波野结衣二区三区在线| 成人国产av品久久久| 中文欧美无线码| 王馨瑶露胸无遮挡在线观看| 国产av一区二区精品久久| 欧美日韩一级在线毛片| 在现免费观看毛片| 亚洲成av片中文字幕在线观看 | 亚洲综合精品二区| 亚洲,欧美,日韩| 男人操女人黄网站| 亚洲精品日本国产第一区| 国产白丝娇喘喷水9色精品| 久久ye,这里只有精品| 国产精品麻豆人妻色哟哟久久| 在线观看免费日韩欧美大片| av电影中文网址| 高清视频免费观看一区二区| xxx大片免费视频| 久久久久久久国产电影| 老鸭窝网址在线观看| 亚洲精品av麻豆狂野| 亚洲视频免费观看视频| 精品久久蜜臀av无| 久久久久久人人人人人| 老鸭窝网址在线观看| 热re99久久国产66热| 秋霞伦理黄片| 性少妇av在线| 丝袜在线中文字幕| 精品福利永久在线观看| 久久国产亚洲av麻豆专区| 国产xxxxx性猛交| 日本午夜av视频| 亚洲国产色片| www.av在线官网国产| 可以免费在线观看a视频的电影网站 | 99热网站在线观看| 国产 精品1| 最近中文字幕2019免费版| 午夜免费鲁丝| 日韩视频在线欧美| 日韩中字成人| 国产 精品1| 色网站视频免费| 最近中文字幕高清免费大全6| 狠狠精品人妻久久久久久综合| 欧美日韩一区二区视频在线观看视频在线| 亚洲国产欧美在线一区| 人妻少妇偷人精品九色| 亚洲国产精品999| 97在线视频观看| 精品国产国语对白av| 在线观看一区二区三区激情| 99热国产这里只有精品6| 麻豆乱淫一区二区| 肉色欧美久久久久久久蜜桃| 美女xxoo啪啪120秒动态图| 午夜福利乱码中文字幕| 一本色道久久久久久精品综合| 最近的中文字幕免费完整| 国产av码专区亚洲av| 久久精品久久精品一区二区三区| h视频一区二区三区| 久久久久视频综合| 久久精品国产a三级三级三级| 亚洲精品自拍成人| 免费高清在线观看日韩| 免费不卡的大黄色大毛片视频在线观看| 在现免费观看毛片| 欧美激情极品国产一区二区三区| 久久ye,这里只有精品| 久久精品熟女亚洲av麻豆精品| 久久久久精品久久久久真实原创| 亚洲欧美日韩另类电影网站| 国产高清不卡午夜福利| 桃花免费在线播放| 久久久久久久大尺度免费视频| 成人毛片a级毛片在线播放| 亚洲欧美一区二区三区久久| 美女高潮到喷水免费观看| 制服人妻中文乱码| 日韩欧美一区视频在线观看| 亚洲国产欧美在线一区| www.自偷自拍.com| 99香蕉大伊视频| 热re99久久精品国产66热6| 国产黄频视频在线观看| 最近2019中文字幕mv第一页| 大陆偷拍与自拍| 男男h啪啪无遮挡| 在线天堂中文资源库| 久久久久久久久免费视频了| 久久毛片免费看一区二区三区| 大码成人一级视频| 在线观看人妻少妇| 欧美bdsm另类| 亚洲精品中文字幕在线视频| 国产黄频视频在线观看| 韩国av在线不卡| 99久久综合免费| 欧美黄色片欧美黄色片| 中文字幕最新亚洲高清| 美女午夜性视频免费| 国产精品亚洲av一区麻豆 | 97精品久久久久久久久久精品| 久久人妻熟女aⅴ| 亚洲精品国产av成人精品| 亚洲经典国产精华液单| 人人妻人人添人人爽欧美一区卜| 一级爰片在线观看| 亚洲一级一片aⅴ在线观看| 一区二区三区激情视频| 亚洲精品日韩在线中文字幕| 亚洲欧美一区二区三区国产| 满18在线观看网站| 一本大道久久a久久精品| 99国产综合亚洲精品| 咕卡用的链子| 亚洲,欧美,日韩| 自拍欧美九色日韩亚洲蝌蚪91| 精品少妇一区二区三区视频日本电影 | 久久99热这里只频精品6学生| 1024香蕉在线观看| 黑人猛操日本美女一级片| 午夜免费观看性视频| 午夜久久久在线观看| 国产成人精品一,二区| 各种免费的搞黄视频| 丁香六月天网| 中国三级夫妇交换| tube8黄色片| 中文字幕色久视频| 国产成人精品一,二区| 亚洲精品乱久久久久久| 老女人水多毛片| 国产国语露脸激情在线看| 自线自在国产av| 精品国产一区二区久久| 免费黄网站久久成人精品| 建设人人有责人人尽责人人享有的| 高清av免费在线| 久久精品国产鲁丝片午夜精品| 少妇被粗大猛烈的视频| 亚洲三区欧美一区| 在线观看免费日韩欧美大片| 建设人人有责人人尽责人人享有的| 中文天堂在线官网| 欧美日韩av久久| 亚洲av日韩在线播放| 色婷婷久久久亚洲欧美| 在线天堂最新版资源| 久久精品国产综合久久久| 亚洲成人av在线免费| 多毛熟女@视频| 另类亚洲欧美激情| 爱豆传媒免费全集在线观看| 成人二区视频| 欧美精品一区二区免费开放| 亚洲三区欧美一区| 亚洲熟女精品中文字幕| 女的被弄到高潮叫床怎么办| 99re6热这里在线精品视频| 亚洲精品久久午夜乱码| 久久久欧美国产精品| 夫妻午夜视频| a级片在线免费高清观看视频| 多毛熟女@视频| 久久久欧美国产精品| 国产片内射在线| 熟女av电影| 久久精品久久精品一区二区三区| 一本一本久久a久久精品综合妖精 国产伦在线观看视频一区 | 高清av免费在线| 赤兔流量卡办理| 黑人猛操日本美女一级片| 亚洲,欧美精品.| 一级毛片电影观看| 18禁国产床啪视频网站| 久久人人爽av亚洲精品天堂| 亚洲在久久综合| 校园人妻丝袜中文字幕| 尾随美女入室| 久久午夜综合久久蜜桃| 久久精品国产亚洲av涩爱| 国产免费视频播放在线视频| 性高湖久久久久久久久免费观看| 中文字幕av电影在线播放| 成人亚洲精品一区在线观看| 日韩免费高清中文字幕av| 亚洲欧美一区二区三区黑人 | 中文字幕人妻丝袜制服| av女优亚洲男人天堂| 麻豆av在线久日| 国产乱来视频区| 国产熟女午夜一区二区三区| 三上悠亚av全集在线观看| 亚洲国产av影院在线观看| 亚洲第一av免费看| 多毛熟女@视频| 国产不卡av网站在线观看| 久久久久人妻精品一区果冻| 欧美老熟妇乱子伦牲交| 久久精品久久精品一区二区三区| 国产在线视频一区二区| 亚洲精品av麻豆狂野| 欧美激情高清一区二区三区 | 久久久久久久精品精品| 高清视频免费观看一区二区| 高清不卡的av网站| 91aial.com中文字幕在线观看| 精品国产一区二区三区久久久樱花| av在线播放精品| 国产一区二区三区综合在线观看| 国产片内射在线| 精品人妻熟女毛片av久久网站| 9色porny在线观看| 国产一区二区三区综合在线观看| 日韩成人av中文字幕在线观看| 久久精品国产亚洲av涩爱| 一区二区三区四区激情视频| 看十八女毛片水多多多| 热re99久久国产66热| 亚洲第一区二区三区不卡| 欧美人与性动交α欧美软件| 男女啪啪激烈高潮av片| 少妇 在线观看| 国产 一区精品| 亚洲三区欧美一区| 欧美bdsm另类| 男女午夜视频在线观看| 777米奇影视久久| 1024香蕉在线观看| av国产精品久久久久影院| 国产男女超爽视频在线观看| 老司机影院成人| 久久免费观看电影| 国产欧美日韩一区二区三区在线|