亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        一種使用環(huán)形緩存和環(huán)形隊(duì)列實(shí)現(xiàn)UDP高效并發(fā)的方法

        2016-07-25 02:15:57孫明剛積成電子股份有限公司山東濟(jì)南250100
        中國新技術(shù)新產(chǎn)品 2016年11期

        孫明剛(積成電子股份有限公司,山東 濟(jì)南 250100)

        ?

        一種使用環(huán)形緩存和環(huán)形隊(duì)列實(shí)現(xiàn)UDP高效并發(fā)的方法

        孫明剛
        (積成電子股份有限公司,山東 濟(jì)南 250100)

        摘 要:本方法涉及UDP并發(fā)技術(shù)領(lǐng)域,尤其涉及一種使用環(huán)形緩存和環(huán)形隊(duì)列實(shí)現(xiàn)UDP高效并發(fā)的方法。特點(diǎn)如下:在數(shù)據(jù)接收線程中創(chuàng)建環(huán)形隊(duì)列,用于存儲(chǔ)待返回?cái)?shù)據(jù)的客戶端標(biāo)識,并在數(shù)據(jù)處理子線程創(chuàng)建發(fā)送環(huán)形緩存和接收環(huán)形緩存,用于接收數(shù)據(jù)和存儲(chǔ)待發(fā)送數(shù)據(jù);數(shù)據(jù)接收線程在接收數(shù)據(jù)的同時(shí)查看環(huán)形隊(duì)列中是否有需返回?cái)?shù)據(jù)的客戶端標(biāo)識,如由相應(yīng)數(shù)據(jù)處理子線程發(fā)送環(huán)形緩存中的數(shù)據(jù)發(fā)送出去。本方法的循環(huán)緩沖區(qū)可以提供對緩沖區(qū)的互斥訪問,因而數(shù)據(jù)接收線程與數(shù)據(jù)處理子線程之間不需要加互斥保護(hù),可同時(shí)進(jìn)行,從而有了良好的并發(fā)性能,循環(huán)緩沖區(qū)可以更好地利用系統(tǒng)內(nèi)存資源。

        關(guān)鍵詞:環(huán)行緩存;環(huán)形隊(duì)列;并發(fā)性能

        一、一種使用環(huán)形緩存和環(huán)形隊(duì)列實(shí)現(xiàn)UDP高效并發(fā)的方法

        (一)主要步驟

        1 發(fā)起服務(wù)端的數(shù)據(jù)接收線程,創(chuàng)建環(huán)形隊(duì)列。

        3 創(chuàng)建與該客戶端對應(yīng)的數(shù)據(jù)處理子線程,并創(chuàng)建該子線程的發(fā)送環(huán)形緩存和接收環(huán)形緩存。

        4 數(shù)據(jù)接收線程將收到的數(shù)據(jù)復(fù)制到相應(yīng)數(shù)據(jù)處理子線程的接收環(huán)形緩存中。

        6 數(shù)據(jù)接收線程在接收數(shù)據(jù)的同時(shí),查看環(huán)形隊(duì)列中是否有需返回?cái)?shù)據(jù)的客戶端標(biāo)識,如有則將該標(biāo)識出隊(duì)列,由該標(biāo)識索引到相應(yīng)客戶端的數(shù)據(jù)處理子線程,并將該數(shù)據(jù)處理子線程發(fā)送環(huán)形緩存中的數(shù)據(jù)發(fā)送出去。

        (二)主要特征

        圖1

        二、背景技術(shù)

        UDP是用戶數(shù)據(jù)包協(xié)議的簡稱,是OSI(Open System Interconnection,開放式系統(tǒng)互聯(lián))參考模型中一種無連接的傳輸層協(xié)議,提供面向事務(wù)的簡單不可靠信息傳送服務(wù)。目前,UDP實(shí)現(xiàn)并發(fā)有以下三種方法:

        (一)循環(huán)方式

        創(chuàng)建一個(gè)套接字,將它綁定到一個(gè)端口上,并在這個(gè)端口上接收請求,進(jìn)入無限循環(huán),在該循環(huán)中服務(wù)器接受來自客戶的下一個(gè)請求,處理這一請求,然后將這個(gè)應(yīng)答發(fā)回給客戶。這種模式對于處理請求占用時(shí)間較長,效率比較低下。我們考慮像文件傳送這樣的服務(wù),它在處理每一個(gè)請求時(shí),要求有相當(dāng)可觀的時(shí)間,假設(shè)聯(lián)系該服務(wù)器的第一個(gè)客戶要求傳送一個(gè)巨大的文件,而聯(lián)系到該服務(wù)器的第二個(gè)客戶要求傳送一個(gè)小文件,若服務(wù)器一直等到第一個(gè)文件傳送完畢才考慮傳送第二個(gè)文件,那么第二個(gè)客戶將為了一個(gè)小文件而等一段不合理的時(shí)間。

        (二)創(chuàng)建主線程接收請求

        創(chuàng)建數(shù)據(jù)處理子線程單獨(dú)處理接收到的數(shù)據(jù),并將處理結(jié)果發(fā)回給客戶端。設(shè)計(jì)思想,發(fā)起一個(gè)主線程從指定端口接收數(shù)據(jù),當(dāng)接收到數(shù)據(jù)時(shí),創(chuàng)建對應(yīng)的數(shù)據(jù)處理線程,將該數(shù)據(jù)交由該線程處理,處理結(jié)束后將數(shù)據(jù)發(fā)回客戶端,之后數(shù)據(jù)處理線程退出。線程創(chuàng)建和銷毀費(fèi)時(shí)較長,因?yàn)閯?chuàng)建一個(gè)線程要獲取內(nèi)存資源或者其它更多資源,所以提高服務(wù)程序效率的一個(gè)手段就是盡可能地減少創(chuàng)建和銷毀線程的次數(shù)。如果數(shù)據(jù)交互比較頻繁,這種方法性能較低。

        (三)主線程監(jiān)聽客戶請求

        刮耳崖前傳令急,霹靂一聲千騎入。弓刀匼匝網(wǎng)周遭,罪人黜伏將焉逃?鐵籠盛之負(fù)以斧,駭汗淋漓寫如雨。從征土目凡數(shù)千,咸使觀睹爭駢闐。穴中誰敢萌反復(fù),請視今朝索諾木。遠(yuǎn)人從此識天威,愿萬萬古安邊陲。[3]65

        有請求到來時(shí),記下其IP和端口,然后創(chuàng)建一個(gè)子線程將IP和端口傳給子線程,由子線程負(fù)責(zé)與該客戶端通信。這是目前常用的方法,但此方法最大的問題在于:子線程會(huì)新建套接字,并綁定一個(gè)新端口與客戶端通信,如果客戶端指定從服務(wù)器某一端口接收數(shù)據(jù),會(huì)造成客戶端接收失敗。

        圖2

        三、關(guān)于方案

        針對上述問題,本方法提供了一種使用環(huán)形緩存和環(huán)形隊(duì)列實(shí)現(xiàn)UDP高效并發(fā)的解決方案。

        (一)一種使用環(huán)形緩存和環(huán)形隊(duì)列實(shí)現(xiàn)UDP高效并發(fā)的方法主要步驟

        1 發(fā)起服務(wù)端的數(shù)據(jù)接收線程,創(chuàng)建環(huán)形隊(duì)列。

        3 創(chuàng)建與該客戶端對應(yīng)的數(shù)據(jù)處理子線程,并創(chuàng)建該子線程的發(fā)送環(huán)形緩存和接收環(huán)形緩存。

        4 數(shù)據(jù)接收線程將收到的數(shù)據(jù)復(fù)制到相應(yīng)數(shù)據(jù)處理子線程的接收環(huán)形緩存中。

        數(shù)據(jù)處理子線程在其接收環(huán)形緩存中接收數(shù)據(jù),如果接收環(huán)形緩存中有數(shù)據(jù),數(shù)據(jù)處理子線程處理數(shù)據(jù),處理完后將需要發(fā)送的數(shù)據(jù)復(fù)制到其發(fā)送環(huán)形緩存中,并將其對應(yīng)的客戶端標(biāo)識存到數(shù)據(jù)接收線程的環(huán)形隊(duì)列中。

        數(shù)據(jù)接收線程在接收數(shù)據(jù)的同時(shí),查看環(huán)形隊(duì)列中是否有需返回?cái)?shù)據(jù)的客戶端標(biāo)識,如有則將該標(biāo)識出隊(duì)列,由該標(biāo)識索引到相應(yīng)客戶端的數(shù)據(jù)處理子線程,并將該數(shù)據(jù)處理子線程發(fā)送環(huán)形緩存中的數(shù)據(jù)發(fā)送出去。

        執(zhí)行步驟1前需先為數(shù)據(jù)接收線程創(chuàng)建套接字并綁定一端口,固定從服務(wù)器的這一個(gè)端口接收來自客戶端的數(shù)據(jù)。

        (二)本方法的有益效果

        1 循環(huán)緩沖區(qū)可以提供對緩沖區(qū)的互斥訪問,因而數(shù)據(jù)接收線程與數(shù)據(jù)處理子線程之間不需要加互斥保護(hù),可同時(shí)進(jìn)行,從而有了良好的并發(fā)性能,循環(huán)緩沖區(qū)可以更好地利用系統(tǒng)內(nèi)存資源。

        2 使用環(huán)形隊(duì)列存儲(chǔ)需要發(fā)送數(shù)據(jù)的客戶端標(biāo)識,如果有需要發(fā)送數(shù)據(jù)的客戶端則可直接從中取出,不需遍歷所有客戶端,有效減少CPU空轉(zhuǎn)時(shí)間,提高CPU利用率。

        3 數(shù)據(jù)的接收與發(fā)送使用一個(gè)套接字和一個(gè)接收線程即可實(shí)現(xiàn),可以大大減少系統(tǒng)頻繁創(chuàng)建線程的資源開銷,節(jié)約套接字(文件描述符)占用,并可有效避免因新建線程重新綁定端口造成的客戶端接收失敗現(xiàn)象。

        4 數(shù)據(jù)接收和數(shù)據(jù)處理分離設(shè)計(jì),可以使用不同的優(yōu)先級來確保數(shù)據(jù)可靠、完整、實(shí)時(shí)的接收,并符合軟件工程中的“高內(nèi)聚、低耦合”設(shè)計(jì)思想。

        附圖說明:圖1是本方法數(shù)據(jù)接收發(fā)送主線程的流程圖,圖2是本方法數(shù)據(jù)處理子線程的流程圖。

        (三)方案具體實(shí)施方式

        下面結(jié)合附圖對本方法的實(shí)施過程進(jìn)行詳細(xì)說明:一種使用環(huán)形緩存和環(huán)形隊(duì)列實(shí)現(xiàn)UDP高效并發(fā)的方法,如圖所示,包括以下步驟:

        1 為數(shù)據(jù)接收線程創(chuàng)建套接字并綁定一端口,發(fā)起服務(wù)端的數(shù)據(jù)接收線程,創(chuàng)建環(huán)形隊(duì)列。

        3 創(chuàng)建與該客戶端對應(yīng)的數(shù)據(jù)處理子線程,在子線程的構(gòu)造函數(shù)中實(shí)現(xiàn)發(fā)送環(huán)形緩存的創(chuàng)建和接收環(huán)形緩存的創(chuàng)建。

        4 數(shù)據(jù)接收線程將收到的數(shù)據(jù)復(fù)制到相應(yīng)數(shù)據(jù)處理子線程的接收環(huán)形緩存中。

        5 數(shù)據(jù)處理子線程在其接收環(huán)形緩存中接收數(shù)據(jù),如果接收環(huán)形緩存中有數(shù)據(jù),數(shù)據(jù)處理子線程處理數(shù)據(jù),處理完后將需要發(fā)送的數(shù)據(jù)復(fù)制到其發(fā)送環(huán)形緩存中,并將其對應(yīng)的客戶端標(biāo)識存到數(shù)據(jù)接收線程的環(huán)形隊(duì)列中。

        6 數(shù)據(jù)接收線程在接收數(shù)據(jù)的同時(shí),每接收完一幀數(shù)據(jù)后去環(huán)形隊(duì)列中查看是否有需返回?cái)?shù)據(jù)的客戶端標(biāo)識,如有則將該標(biāo)識出隊(duì)列,由該標(biāo)識索引到相應(yīng)客戶端的數(shù)據(jù)處理子線程,并將該數(shù)據(jù)處理子線程發(fā)送環(huán)形緩存中的數(shù)據(jù)發(fā)送出去。

        參考文獻(xiàn)

        [1]蘆東昕,張華強(qiáng),王陳.基于UDP的可靠數(shù)據(jù)傳遞技術(shù)研究[J].計(jì)算機(jī)工程,2003(22):62-63.

        [2]劉捷,龔根華,饒泓,陶俊才.基于UDP的新型數(shù)據(jù)傳輸協(xié)議[J].南昌大學(xué)學(xué)報(bào)(理科版),2006(5):496-499+503.

        [3]王艷芳,戴永,劉東華,孔華威,曾艷艷.基于UDP的數(shù)據(jù)可靠傳輸技術(shù)研究與應(yīng)用[J].計(jì)算機(jī)工程與應(yīng)用,2010(3):10 5-108.

        中圖分類號:TP391

        文獻(xiàn)標(biāo)識碼:A

        通信地址2 數(shù)據(jù)接收線程在指定端口接收數(shù)據(jù),如果收到合法數(shù)據(jù),通過數(shù)據(jù)中的來判斷是否已經(jīng)存在相應(yīng)客戶端的數(shù)據(jù)處理子線程,如果存在,則直接執(zhí)行步驟4;如果不存在,則先執(zhí)行步驟3創(chuàng)建新的數(shù)據(jù)處理子線程,之后再執(zhí)行步驟4。 其主要特征在于執(zhí)行步驟1前需要先為數(shù)據(jù)接收線程創(chuàng)建套接字并綁定一端口。所述數(shù)據(jù)中的是指數(shù)據(jù)中包含的源客戶端的IP地址或設(shè)備的 2 數(shù)據(jù)接收線程在指定端口接收數(shù)據(jù),如果收到合法數(shù)據(jù),通過數(shù)據(jù)中的來判斷是否已經(jīng)存在相應(yīng)客戶端的數(shù)據(jù)處理子線程,如果存在,則直接執(zhí)行步驟4;如果不存在,則先執(zhí)行步驟3創(chuàng)建新的數(shù)據(jù)處理子線程,之后再執(zhí)行步驟4。 所述數(shù)據(jù)中的是指數(shù)據(jù)中包含的源客戶端的IP地址或設(shè)備的 2 數(shù)據(jù)接收線程在綁定端口接收數(shù)據(jù),如果收到合法數(shù)據(jù),通過數(shù)據(jù)中的(指數(shù)據(jù)中包含的源客戶端的IP地址或設(shè)備的 。數(shù)據(jù)合法與否是根據(jù)數(shù)據(jù)的起始字符、結(jié)束字符、長度和校驗(yàn)碼綜合判斷。 。通信過程中可以利用這一地址來識別各客戶端。數(shù)據(jù)合法與否是根據(jù)數(shù)據(jù)的起始字符、結(jié)束字符、長度和校驗(yàn)碼綜合判斷。[0011]本方法使用通信程序中經(jīng)常用到的環(huán)形緩存作為數(shù)據(jù)結(jié)構(gòu),來存放通信中各客戶端發(fā)送和接收的數(shù)據(jù),環(huán)形緩存是一個(gè)先進(jìn)先出的循環(huán)緩沖區(qū),可以向通信程序提供對緩存的互斥訪問。使用環(huán)形隊(duì)列結(jié)構(gòu)來存儲(chǔ)每一個(gè)需要在數(shù)據(jù)處理完后發(fā)送返回結(jié)果的客戶端標(biāo)識。這兩種數(shù)據(jù)結(jié)構(gòu)的配合使用可以實(shí)現(xiàn)高效的UDP并發(fā)。 )來判斷是否已經(jīng)存在相應(yīng)客戶端的數(shù)據(jù)處理子線程,如果存在,則直接執(zhí)行步驟4;如果不存在,則先執(zhí)行步驟3,創(chuàng)建新的數(shù)據(jù)處理子線程,之后再執(zhí)行步驟4。數(shù)據(jù)合法性判斷是根據(jù)數(shù)據(jù)的起始字符、結(jié)束字符、長度和校驗(yàn)碼綜合判斷。

        成人性生交大片免费5| 亚洲有码转帖| 在线观看网址你懂的| 老司机亚洲精品影院| 亚洲熟妇丰满大屁股熟妇| 日韩在线视精品在亚洲| 国产精品人成在线765| 日韩亚洲国产中文字幕| 久久久精品亚洲一区二区国产av| 成人国产精品一区二区八戒网| 亚洲人成影院在线无码按摩店| 国精无码欧精品亚洲一区| 亚洲中文字幕巨乳人妻| 日本一区二区啪啪视频| 亚洲麻豆视频免费观看| 亚洲精品一品区二品区三品区| 精品人人妻人人澡人人爽牛牛| АⅤ天堂中文在线网| 国产成人av区一区二区三| 久久久99精品成人片| 国产精品成人观看视频| 久久精品无码一区二区2020| 亚洲一本之道高清在线观看| 中文字幕人妻av四季| 欧美拍拍视频免费大全| 小荡货奶真大水真多紧视频| 日日av拍夜夜添久久免费 | 免费人成视频欧美| 亚洲国产一区二区视频| 亚洲精品无码av人在线观看国产| 亚洲h在线播放在线观看h| 国产系列丝袜熟女精品视频| 免费在线av一区二区| 日韩女同精品av在线观看| 18禁无遮拦无码国产在线播放| 国产亚洲日韩一区二区三区| 久久精品国产亚洲av高清蜜臀| 亚洲精品国产成人久久av| 人妻中文字幕无码系列| 精品国精品国产自在久国产应用| 日韩在线中文字幕一区二区三区|