• <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>

            woaidongmao

            文章均收錄自他人博客,但不喜標(biāo)題前加-[轉(zhuǎn)貼],因其丑陋,見諒!~
            隨筆 - 1469, 文章 - 0, 評論 - 661, 引用 - 0
            數(shù)據(jù)加載中……

            epoll與iocp的異同

            目前國內(nèi)的網(wǎng)游研發(fā),在服務(wù)器使用的開發(fā)平臺方面,winlinux的比例各占多少,我一時半會也沒有準(zhǔn)確數(shù)據(jù),但從我了解的這么多公司情況來看,用 win系統(tǒng)的還是比較多一點(diǎn),這些企業(yè)一般都是比較單純的網(wǎng)游公司,而用linux的則多數(shù)是一些傳統(tǒng)的互聯(lián)網(wǎng)公司,比如網(wǎng)易和騰訊。

            網(wǎng)游服務(wù)器用win還是linux,向來都是大家關(guān)注的話題。我想,原因可能很多,但此處不想過多論述這個問題,為避免多費(fèi)口舌,我還是明確表明一下自己的觀點(diǎn):我是推薦用linux作開發(fā)的,雖然我也是剛轉(zhuǎn)來作linux平臺下的開發(fā)。

            那么,說具體一點(diǎn)。但凡作過比較深入的網(wǎng)絡(luò)編程的人,都會知道,在win平臺下,高效的IO模型是IOCP,而在linux底下則是epoll。那么,epolliocp之間到底有哪些異同之處呢?

            首先,我們看一下它們相同的地方。

            兩者都是處理異步IO的高效模型,這種高效,除了“異步處理”這個共同的特征之外,二者都可以通過指針攜帶應(yīng)用層數(shù)據(jù):在IOCP里,應(yīng)用層數(shù)據(jù)可以通過單句柄數(shù)據(jù)和單IO數(shù)據(jù)來與IOCP底層通信;而在epoll里,可以通過epoll_data里的'void *ptr'來傳遞。這是一種很重要的思想,也是它們高效的原因所在:當(dāng)事件的通知到來時,它不僅告訴你發(fā)生了什么樣的事件,還同時告訴這次事件所操作的數(shù)據(jù)是哪些。

            那么,epolliocp到底又有什么不同呢?

            以我目前粗淺的使用經(jīng)驗(yàn)來看,至少可以得到以下結(jié)論:

            1.iocp
            是在IO操作完成之后,才通過get函數(shù)返回這個完成通知的;而epoll則不是在IO操作完成之后才通知你,它的工作原理是,你如果想進(jìn)行IO操作時,先向epoll查詢是否可讀或可寫,如果處于可讀或可寫狀態(tài)后,epoll會通過epoll_wait函數(shù)通知你,此時你再進(jìn)行進(jìn)一步的recvsend操作。

            2.
            1的基礎(chǔ)上,我們其實(shí)可以看到,epoll僅僅是一個異步事件的通知機(jī)制,其本身并不作任何的IO讀寫操作,它只負(fù)責(zé)告訴你是不是可以讀或可以寫了,而具體的讀寫操作,還要應(yīng)用層自己來作;但iocp的封裝就要多一些,它不僅會有完成之后的事件通知,更重要的是,它同時封裝了一部分的IO控制邏輯。從這一點(diǎn)上來看,iocp的封裝似乎更全面一點(diǎn),但是,換個角度看,epoll僅提供這種機(jī)制也是非常好的,它保持了事件通知與IO操作之間彼此的獨(dú)立性,使得epoll的使用更加靈活。

            這只是我初步使用epoll開發(fā)過程中的體會,以后有更深的體會時還會發(fā)上來跟大家分享。

            posted on 2009-08-24 21:16 肥仔 閱讀(1874) 評論(1)  編輯 收藏 引用 所屬分類: 網(wǎng)絡(luò)編程

            評論

            # re: epoll與iocp的異同  回復(fù)  更多評論   

            你對iocp的理解太膚淺了,iocp最精華的莫過于對多線程的綁定能力,而epoll是沒有這個的,如libevent之類的庫居然按照epoll的模式,弄個所謂的socket消息轉(zhuǎn)發(fā)技巧來實(shí)現(xiàn)線程間通知,這在iocp看來就是畫蛇添足。

            2011-08-01 10:45 | 袁斌
            国产一区二区三精品久久久无广告 | 国产成人无码精品久久久久免费| 国产精品美女久久久久久2018| 久久综合欧美成人| 一本色道久久HEZYO无码| 久久久久国产日韩精品网站| 狠狠狠色丁香婷婷综合久久五月| 伊人伊成久久人综合网777| 99久久99久久精品国产| 国内精品久久久久影院日本| yellow中文字幕久久网| 久久精品国产清自在天天线 | 777久久精品一区二区三区无码| 久久精品中文字幕第23页| 色婷婷综合久久久中文字幕| 久久精品综合网| 中文字幕无码av激情不卡久久| 97久久精品人妻人人搡人人玩| 久久精品国产精品亚洲毛片| 久久精品夜夜夜夜夜久久| 日韩一区二区三区视频久久| 欧美久久一级内射wwwwww.| 97久久精品无码一区二区| 久久精品国产免费观看三人同眠| 99久久免费只有精品国产| 国产一区二区精品久久| 人妻无码αv中文字幕久久琪琪布| 亚洲第一永久AV网站久久精品男人的天堂AV | 国产精品对白刺激久久久| 超级97碰碰碰碰久久久久最新| 一级a性色生活片久久无少妇一级婬片免费放 | 久久精品国产亚洲一区二区| 色综合久久综合中文综合网| 久久久久亚洲AV无码专区体验| 久久久久久极精品久久久| 国产精品免费久久| 国产日韩久久久精品影院首页| 久久精品这里热有精品| 久久九九全国免费| 精品久久一区二区| 成人国内精品久久久久影院VR|