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

Winsock工作模型 ( 轉(zhuǎn) )

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

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

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

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

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

二:WSAAsyncSelect模型

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

三:WSAEventSelect模型

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

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

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

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

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

六:IOCP模型

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


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


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

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            99亚洲伊人久久精品影院红桃| 欧美剧在线免费观看网站| 久久久久久电影| 午夜亚洲视频| 久久精品99| 蜜桃av一区| 国产日韩欧美一区在线| 国产精品系列在线播放| 国内成人在线| 亚洲国产成人精品女人久久久| 亚洲国产天堂网精品网站| 最新亚洲一区| 亚洲午夜精品一区二区| 欧美亚洲三级| 欧美a级片网| 亚洲精品美女| 午夜欧美视频| 欧美激情第五页| 国产日韩精品在线观看| 亚洲国产免费| 香蕉国产精品偷在线观看不卡 | 久久国产视频网| 裸体女人亚洲精品一区| 欧美日本一道本| 国内精品嫩模av私拍在线观看 | 欧美不卡福利| 亚洲国产综合在线看不卡| 欧美日韩国产黄| 性色av一区二区三区| 欧美伊人久久久久久午夜久久久久| 亚洲日本国产| 香蕉久久精品日日躁夜夜躁| 久久激情综合| 欧美日韩福利在线观看| 国产精品永久免费视频| 亚洲国产三级网| 欧美一区二区三区免费观看视频| 欧美成人免费全部| 一区二区三区国产盗摄| 久久一区二区三区av| 国产欧美精品一区二区色综合 | 一本久道久久久| 久久久91精品国产| 亚洲一本大道在线| 欧美精品久久一区二区| 精品二区久久| 久久精品亚洲国产奇米99| 日韩一级欧洲| 欧美日韩在线一二三| 91久久精品日日躁夜夜躁欧美| 久久精品中文字幕免费mv| 亚洲综合色噜噜狠狠| 亚洲国产另类久久精品| 久久视频国产精品免费视频在线| 国产欧美综合一区二区三区| 亚洲你懂的在线视频| 亚洲人成在线免费观看| 欧美成年网站| 亚洲欧洲在线播放| 欧美第十八页| 欧美**字幕| 亚洲精品欧美| 亚洲精品一区二区三区av| 欧美高清在线| 亚洲伦伦在线| 亚洲久久视频| 国产精品久久久久一区二区| 亚洲一区二区在线| 亚洲综合三区| 狠狠色丁香久久婷婷综合丁香 | 欧美日韩一区二区在线| 一区二区三区精品| 亚洲日本成人| 欧美日韩高清在线| 宅男66日本亚洲欧美视频| 日韩一级黄色av| 亚洲国产精品久久久久秋霞影院| 欧美成人69av| 一区二区欧美视频| 一区二区三区www| 国产一区在线观看视频| 美日韩精品免费| 欧美日韩一区二区三区| 小嫩嫩精品导航| 蜜乳av另类精品一区二区| 欧美成人一品| 亚洲欧美网站| 久久久999精品视频| 亚洲人成人一区二区三区| 日韩视频免费在线观看| 国产乱码精品一区二区三区不卡| 久久天天躁夜夜躁狠狠躁2022| 女生裸体视频一区二区三区| 亚洲网站在线播放| 欧美永久精品| 一区二区三区 在线观看视| 亚洲欧美电影在线观看| 在线成人中文字幕| 99国产精品国产精品久久| 国产偷久久久精品专区| 欧美成在线观看| 国产精品一二三| 欧美国产日韩一区二区在线观看| 国产精品草莓在线免费观看| 久久久久久日产精品| 亚洲激情视频网站| 国产午夜亚洲精品不卡| 亚洲国产精品悠悠久久琪琪| 国产欧美视频一区二区| 亚洲激情一区二区| 国产亚洲精品aa| 亚洲精品久久久久久下一站| 国产一区久久| av成人免费在线| 亚洲激情视频| 久久精品亚洲乱码伦伦中文 | 亚洲精品一区在线观看香蕉| 亚洲小视频在线观看| 亚洲精品国精品久久99热一| 午夜精品久久久久久久白皮肤| 夜夜嗨av色一区二区不卡| 久久综合999| 久久久久国产精品人| 国产精品乱子久久久久| 亚洲国产欧美日韩| 在线成人www免费观看视频| 欧美在线影院| 久久久女女女女999久久| 国产亚洲欧美一区二区三区| 一区二区三区不卡视频在线观看 | 亚洲人精品午夜在线观看| 伊人色综合久久天天五月婷| 亚洲一区免费视频| 国产精品久久久久一区二区| 欧美激情精品久久久久久黑人| 国产日韩精品视频一区二区三区 | 久久久久久夜| 久久精品一区二区三区不卡牛牛| 欧美色欧美亚洲另类二区| 日韩一二三在线视频播| 9色精品在线| 欧美日韩一区二区在线| 在线亚洲免费| 亚洲成人自拍视频| 免费高清在线一区| 欧美激情在线有限公司| 一区二区三区精品国产| 国产精品v欧美精品v日韩精品| 亚洲视频在线观看一区| 午夜精品偷拍| 国产主播在线一区| 久久一区中文字幕| 亚洲国产精品va在线观看黑人| 亚洲人成77777在线观看网| 亚洲美女色禁图| 99这里只有久久精品视频| 欧美激情欧美激情在线五月| 亚洲三级观看| 篠田优中文在线播放第一区| 国内精品美女在线观看| 久久久久久久久久久一区| 亚洲国产精品女人久久久| 一区二区三区四区五区在线| 欧美日韩国产免费观看| 亚洲欧美国产一区二区三区| 久久五月天婷婷| 亚洲精品久久久久久下一站| 欧美日韩国产成人在线观看| 亚洲女性裸体视频| 欧美高清在线一区二区| 亚洲主播在线| 在线观看一区二区精品视频| 欧美调教视频| 久久亚洲综合色| 日韩系列欧美系列| 久久久人成影片一区二区三区 | 久久久久这里只有精品| 亚洲乱码视频| 永久免费精品影视网站| 国产精品jvid在线观看蜜臀| 久久成人精品| 亚洲美女黄网| 美日韩丰满少妇在线观看| av成人免费在线观看| 国产三级精品三级| 麻豆精品在线播放| 午夜精品久久久久久久99水蜜桃| 亚洲欧洲三级电影| 久久一区二区三区超碰国产精品 | 免费成人高清| 欧美一区二区在线免费观看| 亚洲精品一区二区三区福利| 国产亚洲精品aa午夜观看| 欧美日韩国产色视频| 久久综合网hezyo| 亚洲欧美在线网| 亚洲午夜精品一区二区| 亚洲美女在线一区| 亚洲国产欧美久久| 免费在线观看一区二区|