青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Winsock工作模型 ( 轉 )

Posted on 2008-01-17 21:22 MiweiDev 閱讀(339) 評論(0)  編輯 收藏 引用 所屬分類: 網絡編程

首先得弄清楚同步、異步、阻塞、非阻塞的概念。
同步和異步是針對通訊的工作模式,阻塞和非阻塞是指socket的I/O操作。
實際上對于socket,只存在阻塞和非阻塞,同步與異步是在程序實現上有所不同。
以阻塞的方式執行recv函數,在沒有收到數據前,此函數是不會返回的,所以這很容易執行函數的線程處于等待I/O上的數據狀態,然后被掛起。非阻塞就不一樣,執行recv時候不管有沒有數據都立即返回,有數據時返回數據,沒數據時返回錯誤。非阻塞可以帶來程序的高效,也帶來了寫程序中必須注意的地方,非阻塞情況下,發送與接收數據時候,要用戶自己管理自己的緩沖區,并且要記錄發送與接受的位置,因為很可能發送與接受數據的任務不能一次完成,需要多次調用send和recv才可以完成。
本來同步異步是用來表示通訊模式的,通信的同步,主要是指客戶端在發送請求后,必須得在服務端有回應后才發送下一個請求。所以這個時候的所有請求將會在服務端得到同步。通信的異步,指客戶端在發送請求后,不必等待服務端的回應就可以發送下一個請求,這樣對于所有的請求動作來說將會在服務端得到異步,這條請求的鏈路就象是一個請求隊列,所有的動作在這里不會得到同步的。但是個人感覺,在說到socket的同步異步時候,同步跟阻塞概念差不多,都是有了結果才返回,異步則是告訴系統我要recv數據,然后馬上返回,等待數據來了后,系統跟程序說數據到了,然后程序再recv數據。引用在網上看到的比較好的描述“阻塞 block 是指,你撥通某人的電話,但是此人不在,于是你拿著電話等他回來,其間不能再用電話。同步大概和阻塞差不多。非阻塞 nonblock 是指,你撥通某人的電話,但是此人不在,于是你掛斷電話,待會兒再打。至于到時候他回來沒有,只有打了電話才知道。即所謂的“輪詢 / poll”。異步是指,你撥通某人的電話,但是此人不在,于是你叫接電話的人告訴那人(leave a message),回來后給你打電話(call back)。”

顯然,異步要高效一些。在Winsock中實現異步的方法有很多,Winsock工作模型有下面六種
    一:select模型
    二:WSAAsyncSelect模型
    三:WSAEventSelect模型
    四:Overlapped I/O 事件通知模型
    五:Overlapped I/O 完成例程模型
    六:IOCP模型
從一到六越來越高級,越來越高效,實現越來越復雜。曾在網上看到一些比喻用來很好的說明這些模型,在這里引用一下。

    老陳有一個在外地工作的女兒,不能經常回來,老陳和她通過信件聯系。他們的信會被郵遞員投遞到他們的信箱里。
一:select模型

老陳非常想看到女兒的信。以至于他每隔10分鐘就下樓檢查信箱,看是否有女兒的信~~~~~
在這種情況下,“下樓檢查信箱”然后回到樓上耽誤了老陳太多的時間,以至于老陳無法做其他工作。

二:WSAAsyncSelect模型

后來,老陳使用了微軟公司的新式信箱。這種信箱非常先進,一旦信箱里有新的信件,蓋茨就會給老陳打電話:喂,大爺,你有新的信件了!從此,老陳再也不必頻繁上下樓檢查信箱了,牙也不疼了,你瞅準了,藍天......不是,微軟~~~~~~~~

三:WSAEventSelect模型

后來,微軟的信箱非常暢銷,購買微軟信箱的人以百萬計數......以至于蓋茨每天24小時給客戶打電話,累得腰酸背痛,喝蟻力神都不好使~~~~~~
微軟改進了他們的信箱:在客戶的家中添加一個附加裝置,這個裝置會監視客戶的信箱,每當新的信件來臨,此裝置會發出“新信件到達”聲,提醒老陳去收信。蓋茨終于可以睡覺了。

四:Overlapped I/O 事件通知模型

后來,微軟通過調查發現,老陳不喜歡上下樓收發信件,因為上下樓其實很浪費時間。于是微軟再次改進他們的信箱。新式的信箱采用了更為先進的技術,只要用戶告訴微軟自己的家在幾樓幾號,新式信箱會把信件直接傳送到用戶的家中,然后告訴用戶,你的信件已經放到你的家中了!老陳很高興,因為他不必再親自收發信件了!

五:Overlapped I/O 完成例程模型

老陳接收到新的信件后,一般的程序是:打開信封----掏出信紙----閱讀信件----回復信件......為了進一步減輕用戶負擔,微軟又開發了一種新的技術:用戶只要告訴微軟對信件的操作步驟,微軟信箱將按照這些步驟去處理信件,不再需要用戶親自拆信/閱讀/回復了!老陳終于過上了小資生活!

六:IOCP模型

微軟信箱似乎很完美,老陳也很滿意。但是在一些大公司情況卻完全不同!這些大公司有數以萬計的信箱,每秒鐘都有數以百計的信件需要處理,以至于微軟信箱經常因超負荷運轉而崩潰!需要重新啟動!微軟不得不使出殺手锏......
微軟給每個大公司派了一名名叫“Completion Port”的超級機器人,讓這個機器人去處理那些信件!


其實,上面每種模型都有優點,要根據程序需求而適當選擇合適的模型,前面三種模型效率已經比較高,實現起來難道不大,很多一般的網絡程序都采用前三種模型,只有對網絡要求特別高的一些服務器才會考慮用后面的那些模型。MFC中的CAsyncSocket類就是用的WSAAsyncSelect模型,電驢中也是用的這種,不過在尋找對應socket的時候進行了優化,查找更快,在GridCast中采用的是WSAEventSelect模型,等待。


BTW:上面所說均在Windows平臺下,只用WinSock才有這么多模型,在linux下,好像就只有第一種select模式,我對linux下的socket不是很了解,應該也有很多提高效率的地方。

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            日韩一级二级三级| 亚洲高清视频的网址| 在线亚洲精品福利网址导航| 亚洲日本无吗高清不卡| 欧美人成网站| 亚洲欧美日韩国产综合| 亚洲裸体俱乐部裸体舞表演av| 在线视频免费在线观看一区二区| 亚洲精品一区二区三| 国产精品国产三级国产aⅴ9色| 欧美在线不卡| 久久视频一区二区| 在线视频精品一区| 欧美一区二区在线免费观看 | 91久久在线| 国产精品va在线播放| 久久精品一区中文字幕| 欧美va亚洲va香蕉在线| 亚洲男人的天堂在线| 久久国产视频网| 一本色道久久综合亚洲精品不| 亚洲在线网站| 亚洲三级免费电影| 亚洲欧洲av一区二区| 91久久精品国产91久久| 亚洲淫性视频| 亚洲精品欧美一区二区三区| 午夜在线视频一区二区区别| 最新精品在线| 欧美在线观看视频一区二区三区 | 国产日韩欧美a| 亚洲国产一区二区三区青草影视 | 久久亚洲午夜电影| 亚洲小说区图片区| 美国成人毛片| 久久三级视频| 国产精品成人一区| 亚洲国产婷婷| 一区精品在线| 午夜一级久久| 亚洲欧美日韩精品综合在线观看| 蜜臀久久99精品久久久画质超高清| 亚洲欧美成aⅴ人在线观看| 免费观看一区| 久久久国产精品一区二区中文| 欧美日韩综合另类| 欧美激情精品久久久久久黑人 | 六月丁香综合| 久久中文字幕导航| 国产亚洲欧洲| 亚久久调教视频| 亚洲欧美综合国产精品一区| 欧美日韩三区四区| 亚洲国产视频直播| 日韩亚洲欧美成人一区| 欧美 亚欧 日韩视频在线| 久久综合福利| 亚洲高清资源| 免费中文日韩| 欧美黄污视频| 亚洲人屁股眼子交8| 免费亚洲婷婷| 欧美激情第9页| 91久久综合| 欧美成人精精品一区二区频| 欧美国产一区二区| 国语自产在线不卡| 99综合视频| 亚洲一区日韩在线| 欧美日韩一区自拍| 国产精品99久久久久久久久| 亚洲综合精品四区| 国产欧美一区二区三区另类精品| 亚洲免费影视| 久久综合影音| 亚洲免费电影在线| 欧美视频精品一区| 宅男在线国产精品| 久久精品成人一区二区三区蜜臀| 国产一区二区精品久久| 久久频这里精品99香蕉| 91久久精品美女| 亚洲午夜久久久久久尤物| 国产精品白丝黑袜喷水久久久 | 欧美高清自拍一区| 一本色道久久综合亚洲精品不卡| 国产精品超碰97尤物18| 欧美一区二区私人影院日本| 欧美成人性网| 午夜精品久久久久| 红桃视频国产精品| 欧美久久影院| 午夜精品久久| 亚洲黄色在线视频| 亚洲欧美日韩电影| 亚洲国产成人久久| 国产精品进线69影院| 久久aⅴ国产欧美74aaa| 亚洲激情视频在线观看| 久久成人精品电影| 一区二区高清在线观看| 韩国v欧美v日本v亚洲v| 欧美日韩一区国产| 久久久久久欧美| 亚洲线精品一区二区三区八戒| 老司机免费视频久久| 亚洲在线视频网站| 亚洲精品国产精品国自产在线| 国产精品一区二区三区乱码| 欧美高清在线视频观看不卡| 久久国内精品自在自线400部| 日韩亚洲欧美在线观看| 欧美成人高清| 久久超碰97中文字幕| 亚洲视频精选在线| 最新成人在线| 原创国产精品91| 国产美女在线精品免费观看| 欧美日本一道本在线视频| 久久久久久久久久久一区| 亚洲尤物视频网| 日韩视频在线你懂得| 欧美gay视频| 久久野战av| 久久精品国产精品亚洲| 先锋影音网一区二区| 亚洲在线观看视频网站| 亚洲视频在线播放| 亚洲乱码国产乱码精品精 | 国产目拍亚洲精品99久久精品 | 国产精品久久久久久亚洲调教| 欧美黄色网络| 女人香蕉久久**毛片精品| 久久精品系列| 国产亚洲精品7777| 国产精品日韩二区| 欧美日韩国产区一| 蜜臀a∨国产成人精品| 欧美一区二区大片| 性久久久久久久久| 亚洲综合另类| 欧美在线中文字幕| 久久精品1区| 噜噜噜躁狠狠躁狠狠精品视频| 久久综合色一综合色88| 美女诱惑一区| 欧美激情视频一区二区三区在线播放| 久久亚洲电影| 欧美黑人国产人伦爽爽爽| 欧美福利小视频| 亚洲片国产一区一级在线观看| 最近看过的日韩成人| 亚洲精品中文字| 亚洲特级片在线| 午夜日韩电影| 久久久久久尹人网香蕉| 欧美777四色影视在线| 欧美日韩影院| 国产午夜精品久久| 亚洲国产第一页| 99伊人成综合| 久久精品视频在线看| 欧美成人综合网站| 99国产一区二区三精品乱码| 亚洲性感美女99在线| 香蕉精品999视频一区二区| 久久久久久久久久久久久9999| 欧美精品二区| 欧美va亚洲va日韩∨a综合色| 欧美日韩国产成人| 国产综合一区二区| 亚洲精品美女91| 亚洲欧美中文日韩在线| 欧美fxxxxxx另类| 亚洲图片在线观看| 久久天天狠狠| 国产精品久久久久久亚洲调教| 在线观看的日韩av| 中文日韩在线| 欧美高清视频一区二区三区在线观看| 亚洲精品美女在线观看| 久久国产手机看片| 国产精品v一区二区三区| 亚洲国产成人久久综合| 欧美一区二区三区另类| 欧美成人伊人久久综合网| 亚洲午夜一区二区三区| 免费的成人av| 狠狠久久五月精品中文字幕| 亚洲素人一区二区| 久久另类ts人妖一区二区| 日韩午夜av| 欧美激情成人在线| ●精品国产综合乱码久久久久| 午夜精品久久久久久久99水蜜桃 | 日韩视频永久免费| 男人的天堂亚洲在线| 国内精品久久久久影院 日本资源| 日韩一级在线| 亚洲大片一区二区三区|