国产精品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>

      數(shù)據(jù)分發(fā)方法和裝置制造方法

      文檔序號:6506689閱讀:182來源:國知局
      數(shù)據(jù)分發(fā)方法和裝置制造方法
      【專利摘要】本發(fā)明公開了一種數(shù)據(jù)分發(fā)方法和裝置,所述方法包括:接收線程接收數(shù)據(jù);接收線程按照環(huán)形存儲(chǔ)隊(duì)列中的存儲(chǔ)區(qū)的序號,對所述存儲(chǔ)區(qū)進(jìn)行寫操作,將接收到的所述數(shù)據(jù)存儲(chǔ)到所述存儲(chǔ)區(qū)中;至少一個(gè)發(fā)送線程對所述接收線程已經(jīng)完成寫操作的存儲(chǔ)區(qū)進(jìn)行讀操作,讀取存儲(chǔ)數(shù)據(jù),并將所述存儲(chǔ)數(shù)據(jù)發(fā)送給與至少一個(gè)發(fā)送線程對應(yīng)的至少一個(gè)接收端。應(yīng)用本發(fā)明技術(shù)方案,能夠提高數(shù)據(jù)分發(fā)處理的效率。
      【專利說明】數(shù)據(jù)分發(fā)方法和裝置
      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明涉及數(shù)據(jù)傳輸【技術(shù)領(lǐng)域】,特別是涉及一種數(shù)據(jù)分發(fā)方法和裝置。
      【背景技術(shù)】
      [0002]隨著計(jì)算機(jī)和網(wǎng)絡(luò)技術(shù)的發(fā)展,在很多網(wǎng)絡(luò)服務(wù)中實(shí)現(xiàn)了數(shù)據(jù)的分發(fā)處理。例如,在音視頻點(diǎn)播系統(tǒng)中,多個(gè)客戶終端可以點(diǎn)播同一個(gè)視頻源的音視頻數(shù)據(jù)。
      [0003]傳統(tǒng)的數(shù)據(jù)分發(fā)技術(shù),以上述音視頻點(diǎn)播系統(tǒng)為例,是通過轉(zhuǎn)發(fā)服務(wù)器將視頻源的數(shù)據(jù)分發(fā)給點(diǎn)播視頻的多個(gè)客戶終端。轉(zhuǎn)發(fā)服務(wù)器通過多線程技術(shù),將數(shù)據(jù)分發(fā)給多個(gè)客戶終端,為了保證多個(gè)線程進(jìn)行數(shù)據(jù)的讀和寫操作時(shí),不發(fā)生沖突,通常的做法是采用線程鎖技術(shù),也就是不能同時(shí)有兩線程進(jìn)行讀或?qū)懖僮?,線程鎖技術(shù)雖然保證了安全性,但是等待線程鎖釋放的線程會(huì)被掛起直至線程鎖釋放,由此降低了系統(tǒng)的性能和數(shù)據(jù)分發(fā)處理的效率。

      【發(fā)明內(nèi)容】

      [0004]基于此,有必要提供一種數(shù)據(jù)分發(fā)方法和裝置,能夠提高數(shù)據(jù)分發(fā)處理的效率。
      [0005]一種數(shù)據(jù)分發(fā)方法,所述方法包括:
      [0006]接收線程接收數(shù)據(jù);
      [0007]接收線程按照環(huán)形存儲(chǔ)隊(duì)列中的存儲(chǔ)區(qū)的序號,對所述存儲(chǔ)區(qū)進(jìn)行寫操作,將接收到的所述數(shù)據(jù)存儲(chǔ)到所述存儲(chǔ)區(qū)中;
      [0008]至少一個(gè)發(fā)送線程對所述接收線程已經(jīng)完成寫操作的存儲(chǔ)區(qū)進(jìn)行讀操作,讀取存儲(chǔ)數(shù)據(jù),并將所述存儲(chǔ)數(shù)據(jù)發(fā)送給與至少一個(gè)發(fā)送線程對應(yīng)的至少一個(gè)接收端。
      [0009]一種數(shù)據(jù)分發(fā)裝置,所述裝置包括:
      [0010]接收線程,用于接收數(shù)據(jù);
      [0011]存儲(chǔ)模塊,所述存儲(chǔ)模塊以環(huán)形存儲(chǔ)隊(duì)列形式存儲(chǔ)數(shù)據(jù),所述環(huán)形存儲(chǔ)隊(duì)列包括多個(gè)存儲(chǔ)區(qū),每一所述存儲(chǔ)區(qū)對應(yīng)于一個(gè)序號;
      [0012]所述接收線程,還用于按照環(huán)形存儲(chǔ)隊(duì)列中的存儲(chǔ)區(qū)的序號,對所述存儲(chǔ)區(qū)進(jìn)行寫操作,將接收到的所述數(shù)據(jù)存儲(chǔ)到所述存儲(chǔ)區(qū)中;
      [0013]至少一個(gè)發(fā)送線程,用于對所述接收線程已經(jīng)完成寫操作的存儲(chǔ)區(qū)進(jìn)行讀操作,讀取存儲(chǔ)數(shù)據(jù),并將所述存儲(chǔ)數(shù)據(jù)發(fā)送給與至少一個(gè)發(fā)送線程對應(yīng)的至少一個(gè)接收端。
      [0014]上述數(shù)據(jù)分發(fā)方法和裝置,在進(jìn)行數(shù)據(jù)分發(fā)處理時(shí),通過一個(gè)接收線程接收數(shù)據(jù)源的數(shù)據(jù),并把數(shù)據(jù)循環(huán)存儲(chǔ)在環(huán)形存儲(chǔ)隊(duì)列的存儲(chǔ)區(qū)中,至少一個(gè)發(fā)送線程保持在接收線程之后,讀取接收線程已經(jīng)完成寫操作的存儲(chǔ)區(qū)中的存儲(chǔ)數(shù)據(jù),并將存儲(chǔ)數(shù)據(jù)發(fā)送給對應(yīng)的至少一個(gè)接收端,與傳統(tǒng)的數(shù)據(jù)分發(fā)相比,不需要通過線程鎖技術(shù),發(fā)送線程之間沒有占鎖和等待鎖釋放的處理過程,降低了數(shù)據(jù)分發(fā)處理的復(fù)雜性,提高了數(shù)據(jù)分發(fā)處理的效率。【專利附圖】

      【附圖說明】
      [0015]圖1為一個(gè)實(shí)施例中的數(shù)據(jù)分發(fā)方法的流程示意圖;
      [0016]圖2A至圖2D為一個(gè)實(shí)施例中的數(shù)據(jù)分發(fā)處理的工作示意圖;
      [0017]圖3A為數(shù)據(jù)分發(fā)處理發(fā)生數(shù)據(jù)丟包的示意圖;
      [0018]圖3B至圖3C為一個(gè)實(shí)施例中的數(shù)據(jù)分發(fā)處理的工作示意圖。
      【具體實(shí)施方式】
      [0019]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
      [0020]參見圖1,在一個(gè)實(shí)施例中,提供了一種數(shù)據(jù)分發(fā)方法。該方法適用于將一數(shù)據(jù)源的數(shù)據(jù)分發(fā)給至少一個(gè)接收端的工作場景,例如可以是多個(gè)用戶客戶端點(diǎn)播同一視頻節(jié)目的場景。本實(shí)施例中的數(shù)據(jù)分發(fā)處理方法,其流程包括:
      [0021]步驟102,接收線程接收數(shù)據(jù)。
      [0022]數(shù)據(jù)分發(fā)任務(wù)開始后,通過接收線程接收數(shù)據(jù)源的數(shù)據(jù)。在本實(shí)施例中,數(shù)據(jù)源可以是音視頻服務(wù)器等。音視頻服務(wù)器可以但不限于通過攝像頭、話筒等輸入裝置獲取實(shí)時(shí)數(shù)據(jù),也可以預(yù)先存儲(chǔ)有音視頻數(shù)據(jù)。接收線程接收音視頻數(shù)據(jù),以供后續(xù)發(fā)送線程發(fā)送給多個(gè)接收端。
      [0023]步驟104,接收線程按照環(huán)形存儲(chǔ)隊(duì)列中的存儲(chǔ)區(qū)的序號,對存儲(chǔ)區(qū)進(jìn)行寫操作,將接收到的數(shù)據(jù)存儲(chǔ)到存儲(chǔ)區(qū)中。
      [0024]接收線程接收數(shù)據(jù)源的數(shù)據(jù),例如音視頻數(shù)據(jù),按照預(yù)設(shè)的環(huán)形存儲(chǔ)隊(duì)列中的存儲(chǔ)區(qū)的序號,循環(huán)對存儲(chǔ)區(qū)進(jìn)行寫操作,存儲(chǔ)接收到的數(shù)據(jù)。
      [0025]參見圖2A,本實(shí)施例中,環(huán)形存儲(chǔ)隊(duì)列202可以是包含100個(gè)存儲(chǔ)區(qū)的存儲(chǔ)隊(duì)列,相應(yīng)序號為0,I……99,100個(gè)存儲(chǔ)區(qū)的存儲(chǔ)空間大小可以設(shè)置為相同的大小,例如1500字節(jié),接收線程循環(huán)對100個(gè)存儲(chǔ)區(qū)進(jìn)行寫操作,存儲(chǔ)所接收到的數(shù)據(jù)。
      [0026]在本實(shí)施例中,可以通過一個(gè)curWrittenlndex變量協(xié)調(diào)接收線程的工作狀態(tài),curffrittenlndex變量標(biāo)識接收線程已經(jīng)完成寫操作的存儲(chǔ)區(qū)的序號。在數(shù)據(jù)分發(fā)任務(wù)未開始時(shí),curffrittenlndex變量的值初始化_1。參見圖2B,數(shù)據(jù)分發(fā)任務(wù)開始,接收線程204開始工作,接收數(shù)據(jù)源的數(shù)據(jù),并把接收到的數(shù)據(jù)寫到環(huán)形存儲(chǔ)隊(duì)列202中的O號存儲(chǔ)區(qū)。參見圖2C,接收線程204對O號存儲(chǔ)區(qū)完成寫操作,開始將數(shù)據(jù)寫入環(huán)形存儲(chǔ)隊(duì)列202中的I號存儲(chǔ)區(qū),這時(shí)curWrittenlndex變量進(jìn)行自增I處理,值變?yōu)镺,用于標(biāo)識接收線程204已經(jīng)完成O號存儲(chǔ)區(qū)的寫操作。其余的存儲(chǔ)區(qū)依次類推,接收線程只負(fù)責(zé)接收數(shù)據(jù),存儲(chǔ)數(shù)據(jù),與發(fā)送線程工作狀態(tài)無關(guān)。
      [0027]步驟106,至少一個(gè)發(fā)送線程對接收線程已經(jīng)完成寫操作的存儲(chǔ)區(qū)進(jìn)行讀操作,讀取存儲(chǔ)數(shù)據(jù),并將存儲(chǔ)數(shù)據(jù)發(fā)送給與至少一個(gè)發(fā)送線程對應(yīng)的至少一個(gè)接收端。
      [0028]發(fā)送線程與接收端一一對應(yīng),在本實(shí)施例中,至少一個(gè)發(fā)送線程基于網(wǎng)絡(luò)協(xié)議地址和端口號與至少一個(gè)接收端對應(yīng)。隨著接收端的增加或減少,發(fā)送線程的數(shù)目也相應(yīng)進(jìn)行動(dòng)態(tài)的變化。多個(gè)發(fā)送線程之間的工作是相互獨(dú)立的,都保持在接收線程之后,對接收線程已經(jīng)完成寫操作的存儲(chǔ)空間進(jìn)行讀操作,讀取存儲(chǔ)數(shù)據(jù),并把存儲(chǔ)數(shù)據(jù)發(fā)給接收端。[0029]在本實(shí)施中,對于每一個(gè)發(fā)送線程對應(yīng)于一個(gè)curSendlndex變量來協(xié)調(diào)工作狀態(tài),curSendlndex變量標(biāo)識對應(yīng)的發(fā)送線程正在進(jìn)行讀操作的存儲(chǔ)區(qū)的序號。發(fā)送線程正常工作時(shí),curSendlndex變量的值保持不超過curWrittenlndex變量的值。例如,發(fā)送線程在創(chuàng)建后,curSendlndex變可以初始化為-1,之后發(fā)送線程每隔一定時(shí)間,如可設(shè)置為I毫秒,循環(huán)讀取 curWrittenlndex 的值,如果 curWrittenlndex ^ O,則把 curWrittenlndex變量的值賦給curSendlndex變量,在curSendlndex的值發(fā)生變化后,發(fā)送線程就發(fā)送對應(yīng)于curSendlndex變量值的序號的存儲(chǔ)區(qū)數(shù)據(jù)給對應(yīng)的接收端。當(dāng)發(fā)送線程每發(fā)送完一個(gè)存儲(chǔ)區(qū)的數(shù)據(jù),發(fā)送線程以預(yù)設(shè)的時(shí)間間隔,循環(huán)判斷curSendlndex變量自增I處理后 是否超過curWrittenlndex變量的值,如果超過,則curSendlndex變量的值保持不變;如未超過,則curSendlndex變量進(jìn)行自增I處理,發(fā)送線程就發(fā)送對應(yīng)的下一存儲(chǔ)區(qū)的存儲(chǔ)數(shù)據(jù)。例如,參見圖2C,接收線程204對環(huán)形存儲(chǔ)隊(duì)列202中的I號存儲(chǔ)區(qū)進(jìn)行寫操作,curffrittenlndex變量的值為O,發(fā)送線程206讀取到curWrittenlndex變量的值,將發(fā)送線程206對應(yīng)的curSendlndex變量的值賦值為0,發(fā)送線程206開始讀O號存儲(chǔ)區(qū)中的存儲(chǔ)數(shù)據(jù),并把存儲(chǔ)數(shù)據(jù)發(fā)送給發(fā)送線程206對應(yīng)的接收端。又例如,參見圖2D,接收線程204正在對環(huán)形存儲(chǔ)隊(duì)列202中的6號存儲(chǔ)區(qū)進(jìn)行寫操作,curWrittenlndex變量的值為5,此時(shí)發(fā)送線程206完成3號存儲(chǔ)區(qū)的讀操作,發(fā)送線程206對應(yīng)的curSendlndex變量值為3,這時(shí)發(fā)送線程206判斷其對應(yīng)的curSendlndex變量自增I處理后值為4,不超過curWrittenlndex變量的值,貝U發(fā)送線程206對應(yīng)的curSendlndex變量自增I,發(fā)送線程206相應(yīng)開始讀取4號存儲(chǔ)區(qū)的數(shù)據(jù),并進(jìn)行發(fā)送;假設(shè)此時(shí)也有發(fā)送線程208完成5號存儲(chǔ)區(qū)的讀操作,而接受線程204仍未完成6號存儲(chǔ)區(qū)的寫操作,curWrittenlndex變量的值為5,發(fā)送線程208對應(yīng)的curSendlndex變量值為5,發(fā)送線程208判定curSendlndex變量自增I處理后超過curWrittenlndex變量,則curSendlndex變量值保持不變,之后發(fā)送線程208以預(yù)設(shè)的間隔時(shí)間進(jìn)行循環(huán)判斷,直到發(fā)送線程208開始下一存儲(chǔ)區(qū)數(shù)據(jù)的發(fā)送。
      [0030]本實(shí)施例提供的數(shù)據(jù)分發(fā)方法,在進(jìn)行數(shù)據(jù)分發(fā)處理時(shí),通過一個(gè)接收線程接收數(shù)據(jù)源的數(shù)據(jù),并把數(shù)據(jù)循環(huán)存儲(chǔ)在環(huán)形存儲(chǔ)隊(duì)列的存儲(chǔ)區(qū)中,至少一個(gè)發(fā)送線程保持在接收線程之后,讀取接收線程已經(jīng)完成寫操作的存儲(chǔ)區(qū)中的存儲(chǔ)數(shù)據(jù),并將存儲(chǔ)數(shù)據(jù)發(fā)送給對應(yīng)的至少一個(gè)接收端,與傳統(tǒng)的數(shù)據(jù)分發(fā)相比,不需要通過線程鎖技術(shù),發(fā)送線程之間沒有占鎖和等待鎖釋放的處理過程,降低了數(shù)據(jù)分發(fā)處理的復(fù)雜性,提高了數(shù)據(jù)分發(fā)處理的效率。
      [0031 ] 參見圖3A,發(fā)送線程306可能發(fā)生故障而暫停,這時(shí)發(fā)送先程304進(jìn)行數(shù)據(jù)的寫操作,會(huì)“追”上發(fā)送線程306。發(fā)送線程306正常工作后,就會(huì)發(fā)生數(shù)據(jù)丟包,丟掉環(huán)形存儲(chǔ)隊(duì)列302上100個(gè)存儲(chǔ)區(qū)的數(shù)據(jù)。
      [0032]為減少數(shù)據(jù)的丟包率,參見圖3B和圖3C,在一個(gè)實(shí)施例中,提供了一種數(shù)據(jù)分發(fā)方法的工作示意圖。本方法除包括圖1、圖2A至圖2D中實(shí)施例的全部步驟外,還包括下列處理步驟:
      [0033]發(fā)送線程判斷:接收線程已經(jīng)完成寫操作的存儲(chǔ)區(qū)的第一序號是否在發(fā)送線程進(jìn)行讀操作的存儲(chǔ)區(qū)的第二序號之前,并且兩序號之間的間隔是否小于預(yù)設(shè)的第一閥值;若是,則發(fā)送線程按照預(yù)設(shè)的間隔值,間隔讀取序號相差該間隔值的存儲(chǔ)區(qū)中的存儲(chǔ)數(shù)據(jù),并將存儲(chǔ)數(shù)據(jù)發(fā)送給所述發(fā)送線程對應(yīng)的接收端。參見圖3B,接收線程304正在對O號存儲(chǔ)區(qū)進(jìn)行寫操作,接收線程304對應(yīng)的curWrittenlndex變量值為99。發(fā)送線程306恢復(fù)工作后,讀取3號存儲(chǔ)區(qū)的存儲(chǔ)數(shù)據(jù),對應(yīng)的curSendlndex變量的值為3,這時(shí)發(fā)送線程306判斷兩序號的間隔為5,小于預(yù)設(shè)的第一閥值,例如第一閥值可以設(shè)置為10,則發(fā)送線程306在發(fā)送完3號存儲(chǔ)區(qū)的數(shù)據(jù)后,對curSendlndex變量進(jìn)行加2處理,發(fā)送線程306將依次發(fā)送5號存儲(chǔ)區(qū)、7號存儲(chǔ)區(qū)的數(shù)據(jù)…,其余類推。
      [0034]在發(fā)送線程按照預(yù)設(shè)的間隔值,間隔讀取序號相差該間隔值的存儲(chǔ)區(qū)中的存儲(chǔ)數(shù)據(jù)進(jìn)行發(fā)送之后,記錄當(dāng)前存儲(chǔ)區(qū)的發(fā)送時(shí)間;發(fā)送線程并判斷發(fā)送時(shí)間是否超過預(yù)設(shè)的第二閥值;若是,則發(fā)送線程按照預(yù)設(shè)的間隔值,讀取下一序號的存儲(chǔ)區(qū)中的存儲(chǔ)數(shù)據(jù),并將存儲(chǔ)數(shù)據(jù)發(fā)送至所述發(fā)送線程對應(yīng)的接收端。例如參見圖3B,當(dāng)發(fā)送線程306判斷兩序號相差小于預(yù)設(shè)的第一閥值后,發(fā)送線程306記錄每一個(gè)存儲(chǔ)區(qū)對應(yīng)的發(fā)送時(shí)間,若發(fā)送時(shí)間超過預(yù)設(shè)的第二閥值,如10毫秒等,則發(fā)送線程將對應(yīng)的curSendlndex變量進(jìn)行加2處理,進(jìn)行下一序號的存儲(chǔ)區(qū)數(shù)據(jù)的發(fā)送。
      [0035]在發(fā)送線程按照預(yù)設(shè)的間隔值,間隔讀取序號相差該間隔值的存儲(chǔ)區(qū)中的存儲(chǔ)數(shù)據(jù)進(jìn)行發(fā)送之后,發(fā)送線程判斷兩序號之間的間隔是否大于第三閥值;若是,則發(fā)送線程按照存儲(chǔ)區(qū)的序號,讀取接收線程已經(jīng)完成寫操作的存儲(chǔ)區(qū)中的存儲(chǔ)數(shù)據(jù),并將存儲(chǔ)數(shù)據(jù)發(fā)送給發(fā)送線程對應(yīng)的接收端,若否,發(fā)送線程繼續(xù)按照預(yù)設(shè)的間隔值,間隔讀取序號相差該間隔值的存儲(chǔ)區(qū)中的存儲(chǔ)數(shù)據(jù),并將存儲(chǔ)數(shù)據(jù)發(fā)送給所述發(fā)送線程對應(yīng)的接收端。參見圖3C,發(fā)送線程306判定curSendlndex變量和curWrittenlndex變量的間隔超過預(yù)設(shè)的第三閥值,發(fā)送線程306發(fā)送完當(dāng)前存儲(chǔ)區(qū)的數(shù)據(jù)后,后續(xù)對curSendlndex變量自增I處理。
      [0036]本實(shí)施例提供的數(shù)據(jù)分發(fā)方法,不僅提高了數(shù)據(jù)分發(fā)處理的效率,還減少了數(shù)據(jù)丟包率。
      [0037]在一個(gè)實(shí)施例中,相應(yīng)提供了一種數(shù)據(jù)分發(fā)裝置,包括:
      [0038]接收線程,用于接收數(shù)據(jù)。
      [0039]存儲(chǔ)模塊,存儲(chǔ)模塊以環(huán)形存儲(chǔ)隊(duì)列形式存儲(chǔ)數(shù)據(jù),環(huán)形存儲(chǔ)隊(duì)列中包括多個(gè)存儲(chǔ)區(qū),每一存儲(chǔ)區(qū)對應(yīng)于一個(gè)序號。
      [0040]接收線程,還用于按照環(huán)形存儲(chǔ)隊(duì)列中的存儲(chǔ)區(qū)的序號,對存儲(chǔ)區(qū)進(jìn)行寫操作,將接收到的數(shù)據(jù)存儲(chǔ)到存儲(chǔ)區(qū)中。
      [0041]至少一個(gè)發(fā)送線程,用于對接收線程已經(jīng)完成寫操作的存儲(chǔ)區(qū)進(jìn)行讀操作,讀取存儲(chǔ)數(shù)據(jù),并將存儲(chǔ)數(shù)據(jù)發(fā)送給與至少一個(gè)發(fā)送線程對應(yīng)的至少一個(gè)接收端。
      [0042]在一個(gè)實(shí)施例中,發(fā)送線程還用于判斷:接收線程已經(jīng)完成寫操作的存儲(chǔ)區(qū)的第一序號是否在發(fā)送線程進(jìn)行讀操作的存儲(chǔ)區(qū)的第二序號之前,并且兩序號之間的間隔是否小于預(yù)設(shè)的第一閥值;若是,則發(fā)送線程還用于按照預(yù)設(shè)的間隔值,間隔讀取序號相差間隔值的存儲(chǔ)區(qū)中的存儲(chǔ)數(shù)據(jù),并將存儲(chǔ)數(shù)據(jù)發(fā)送給發(fā)送線程對應(yīng)的接收端。
      [0043]在一個(gè)實(shí)施例中,發(fā)送線程用于讀取存儲(chǔ)區(qū)中的存儲(chǔ)數(shù)據(jù),將存儲(chǔ)數(shù)據(jù)發(fā)送給發(fā)送線程對應(yīng)的接收端,并記錄當(dāng)前存儲(chǔ)區(qū)的發(fā)送時(shí)間;以及判斷發(fā)送時(shí)間是否超過預(yù)設(shè)的第二閥值;若是,則發(fā)送線程按照預(yù)設(shè)的間隔值,讀取下一序號的存儲(chǔ)區(qū)中的存儲(chǔ)數(shù)據(jù),并將存儲(chǔ)數(shù)據(jù)發(fā)送至發(fā)送線程對應(yīng)的接收端。
      [0044]在一個(gè)實(shí)施例中,發(fā)送線程還用于進(jìn)一步判斷兩序號之間的間隔是否大于第三閥值,若是,則發(fā)送線程按照存儲(chǔ)區(qū)的序號,讀取接收線程已經(jīng)完成寫操作的存儲(chǔ)區(qū)中的存儲(chǔ)數(shù)據(jù),并將存儲(chǔ)數(shù)據(jù)發(fā)送給發(fā)送線程對應(yīng)的接收端;若否,發(fā)送線程繼續(xù)按照預(yù)設(shè)的間隔值,間隔讀取序號相差該間隔值的存儲(chǔ)區(qū)中的存儲(chǔ)數(shù)據(jù),并將存儲(chǔ)數(shù)據(jù)發(fā)送給所述發(fā)送線程對應(yīng)的接收端。
      [0045]以上所述實(shí)施例僅表達(dá)了本發(fā)明的幾種實(shí)施方式,其描述較為具體和詳細(xì),但并不能因此而理解為對本發(fā)明專利范圍的限制。應(yīng)當(dāng)指出的是,對于本領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進(jìn),這些都屬于本發(fā)明的保護(hù)范圍。因此,本發(fā)明專利的保護(hù)范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。
      【權(quán)利要求】
      1.一種數(shù)據(jù)分發(fā)方法,所述方法包括: 接收線程接收數(shù)據(jù); 接收線程按照環(huán)形存儲(chǔ)隊(duì)列中的存儲(chǔ)區(qū)的序號,對所述存儲(chǔ)區(qū)進(jìn)行寫操作,將接收到的所述數(shù)據(jù)存儲(chǔ)到所述存儲(chǔ)區(qū)中; 至少一個(gè)發(fā)送線程對所述接收線程已經(jīng)完成寫操作的存儲(chǔ)區(qū)進(jìn)行讀操作,讀取存儲(chǔ)數(shù)據(jù),并將所述存儲(chǔ)數(shù)據(jù)發(fā)送給與至少一個(gè)發(fā)送線程對應(yīng)的至少一個(gè)接收端。
      2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 所述發(fā)送線程判斷:所述接收線程已經(jīng)完成寫操作的存儲(chǔ)區(qū)的第一序號是否在所述發(fā)送線程進(jìn)行讀操作的存儲(chǔ)區(qū)的第二序號之前,并且兩序號之間的間隔是否小于預(yù)設(shè)的第一閥值; 若是,則所述發(fā)送線程按照預(yù)設(shè)的間隔值,間隔讀取序號相差所述間隔值的存儲(chǔ)區(qū)中的存儲(chǔ)數(shù)據(jù),并將所述存儲(chǔ)數(shù)據(jù)發(fā)送給所述發(fā)送線程對應(yīng)的接收端。
      3.根據(jù)權(quán)利要求 2所述的方法,其特征在于,在發(fā)送線程判定第一序號在第二序號之前,并且兩序號之間的間隔小于第一閥值之后,所述方法還包括: 所述發(fā)送線程讀取存儲(chǔ)區(qū)中的存儲(chǔ)數(shù)據(jù),將所述存儲(chǔ)數(shù)據(jù)發(fā)送給所述發(fā)送線程對應(yīng)的接收端,并記錄當(dāng)前存儲(chǔ)區(qū)的發(fā)送時(shí)間; 判斷所述發(fā)送時(shí)間是否超過預(yù)設(shè)的第二閥值; 若是,則所述發(fā)送線程按照預(yù)設(shè)的間隔值,讀取下一序號的存儲(chǔ)區(qū)中的存儲(chǔ)數(shù)據(jù),并將所述存儲(chǔ)數(shù)據(jù)發(fā)送至所述發(fā)送線程對應(yīng)的接收端。
      4.根據(jù)權(quán)利要求2或3所述的方法,其特征在于,在所述發(fā)送線程判定第一序號在第二序號之前,并且兩序號之間的間隔小于第一閥值之后,所述方法還進(jìn)一步包括: 所述發(fā)送線程判斷兩序號之間的間隔是否大于第三閥值; 若是,則所述發(fā)送線程按照所述存儲(chǔ)區(qū)的序號,讀取所述接收線程已經(jīng)完成寫操作的存儲(chǔ)區(qū)中的存儲(chǔ)數(shù)據(jù),并將所述存儲(chǔ)數(shù)據(jù)發(fā)送給所述發(fā)送線程對應(yīng)的接收端;若否,則所述發(fā)送線程按照預(yù)設(shè)的間隔值,間隔讀取序號相差所述間隔值的存儲(chǔ)區(qū)中的存儲(chǔ)數(shù)據(jù),并將所述存儲(chǔ)數(shù)據(jù)發(fā)送給所述發(fā)送線程對應(yīng)的接收端。
      5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述接收線程接收的數(shù)據(jù)包括音視頻數(shù)據(jù),所述至少一個(gè)發(fā)送線程基于網(wǎng)絡(luò)協(xié)議地址和端口號與所述至少一個(gè)接收端對應(yīng)。
      6.一種數(shù)據(jù)分發(fā)裝置,其特征在于,所述裝置包括: 接收線程,用于接收數(shù)據(jù); 存儲(chǔ)模塊,所述存儲(chǔ)模塊以環(huán)形存儲(chǔ)隊(duì)列形式存儲(chǔ)數(shù)據(jù),所述環(huán)形存儲(chǔ)隊(duì)列包括多個(gè)存儲(chǔ)區(qū),每一所述存儲(chǔ)區(qū)對應(yīng)于一個(gè)序號; 所述接收線程,還用于按照環(huán)形存儲(chǔ)隊(duì)列中的存儲(chǔ)區(qū)的序號,對所述存儲(chǔ)區(qū)進(jìn)行寫操作,將接收到的所述數(shù)據(jù)存儲(chǔ)到所述存儲(chǔ)區(qū)中; 至少一個(gè)發(fā)送線程,用于對所述接收線程已經(jīng)完成寫操作的存儲(chǔ)區(qū)進(jìn)行讀操作,讀取存儲(chǔ)數(shù)據(jù),并將所述存儲(chǔ)數(shù)據(jù)發(fā)送給與至少一個(gè)發(fā)送線程對應(yīng)的至少一個(gè)接收端。
      7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述發(fā)送線程還用于判斷:所述接收線程已經(jīng)完成寫操作的存儲(chǔ)區(qū)的第一序號是否在所述發(fā)送線程進(jìn)行讀操作的存儲(chǔ)區(qū)的第二序號之前,并且兩序號之間的間隔是否小于預(yù)設(shè)的第一閥值;若是,則發(fā)送線程還用于按照預(yù)設(shè)的間隔值,間隔讀取序號相差所述間隔值的存儲(chǔ)區(qū)中的存儲(chǔ)數(shù)據(jù),并將所述存儲(chǔ)數(shù)據(jù)發(fā)送給所述發(fā)送線程對應(yīng)的接收端。
      8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述發(fā)送線程用于讀取存儲(chǔ)區(qū)中的存儲(chǔ)數(shù)據(jù),將所述存儲(chǔ)數(shù)據(jù)發(fā)送給所述發(fā)送線程對應(yīng)的接收端,并記錄當(dāng)前存儲(chǔ)區(qū)的發(fā)送時(shí)間;以及判斷所述發(fā)送時(shí)間是否超過預(yù)設(shè)的第二閥值;若是,則所述發(fā)送線程按照預(yù)設(shè)的間隔值,讀取下一序號的存儲(chǔ)區(qū)中的存儲(chǔ)數(shù)據(jù),并將所述存儲(chǔ)數(shù)據(jù)發(fā)送至所述發(fā)送線程對應(yīng)的接收端。
      9.根據(jù)權(quán)利要求7或8所述的裝置,其特征在于,所述發(fā)送線程還用于進(jìn)一步判斷兩序號之間的間隔是否大于第三閥值,若是,則所述發(fā)送線程按照所述存儲(chǔ)區(qū)的序號,讀取所述接收線程已經(jīng)完成寫操作的存儲(chǔ)區(qū)中的存儲(chǔ)數(shù)據(jù),并將所述存儲(chǔ)數(shù)據(jù)發(fā)送給所述發(fā)送線程對應(yīng)的接收端;若否,則所述發(fā)送線程按照預(yù)設(shè)的間隔值,間隔讀取序號相差所述間隔值的存儲(chǔ)區(qū)中的存儲(chǔ)數(shù)據(jù),并將所述存儲(chǔ)數(shù)據(jù)發(fā)送給所述發(fā)送線程對應(yīng)的接收端。
      10.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述接收線程用于接收音視頻數(shù)據(jù),所述至少一個(gè)發(fā)送線程基于 網(wǎng)絡(luò)協(xié)議地址和端口號與所述至少一個(gè)接收端對應(yīng)。
      【文檔編號】G06F12/02GK103475899SQ201310326816
      【公開日】2013年12月25日 申請日期:2013年7月30日 優(yōu)先權(quán)日:2013年7月30日
      【發(fā)明者】林華景 申請人:深圳市融創(chuàng)天下科技股份有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
      1