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

            牽著老婆滿街逛

            嚴(yán)以律己,寬以待人. 三思而后行.
            GMail/GTalk: yanglinbo#google.com;
            MSN/Email: tx7do#yahoo.com.cn;
            QQ: 3 0 3 3 9 6 9 2 0 .

            epoll與iocp的異同之處

            本文作者:sodme
            本文出處:http://blog.csdn.net/sodme
            聲明:本文可以不經(jīng)作者同意任意轉(zhuǎn)載、復(fù)制、引用。但任何對(duì)本文的引用,均須注明本文的作者、出處以及本行聲明信息。

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

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

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

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

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

            那么,epoll和iocp到底又有什么不同呢?

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

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

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

            這只是我初步使用epoll開(kāi)發(fā)過(guò)程中的體會(huì),以后有更深的體會(huì)時(shí)還會(huì)發(fā)上來(lái)跟大家分享。

            posted on 2006-04-20 18:52 楊粼波 閱讀(806) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 網(wǎng)絡(luò)編程

            久久久久久av无码免费看大片| 亚洲精品乱码久久久久久蜜桃不卡 | 久久嫩草影院免费看夜色| 狠狠色狠狠色综合久久| 精品伊人久久大线蕉色首页| 久久久久久亚洲精品无码| 美女久久久久久| 久久久无码精品亚洲日韩按摩| 一本一道久久综合狠狠老| 久久久久亚洲精品天堂| 久久久91精品国产一区二区三区 | 久久久久人妻一区精品色| 久久精品国内一区二区三区| 精品久久人人做人人爽综合| 手机看片久久高清国产日韩| 久久国产乱子伦免费精品| 99久久国产综合精品五月天喷水 | 亚洲国产精品无码久久青草| 无码人妻精品一区二区三区久久| 久久精品蜜芽亚洲国产AV| 久久久久国产精品三级网| 久久精品亚洲一区二区三区浴池| 国产精品99久久精品| 最新久久免费视频| 99久久www免费人成精品| 亚洲国产欧美国产综合久久| 国产成人精品久久亚洲| 亚洲AV无码久久| 久久亚洲av无码精品浪潮| 久久r热这里有精品视频| 亚洲国产成人精品女人久久久 | 亚洲国产精品久久久久| 久久精品一本到99热免费| 国产福利电影一区二区三区,免费久久久久久久精 | 99久久精品国产一区二区| 色婷婷综合久久久久中文一区二区 | 亚洲中文久久精品无码ww16| 久久免费视频6| 狠狠人妻久久久久久综合| 男女久久久国产一区二区三区| 99久久99久久精品国产片果冻|