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

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

            epoll與iocp的異同

            目前國內的網游研發,在服務器使用的開發平臺方面,winlinux的比例各占多少,我一時半會也沒有準確數據,但從我了解的這么多公司情況來看,用 win系統的還是比較多一點,這些企業一般都是比較單純的網游公司,而用linux的則多數是一些傳統的互聯網公司,比如網易和騰訊。

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

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

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

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

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

            以我目前粗淺的使用經驗來看,至少可以得到以下結論:

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

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

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

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

            評論

            # re: epoll與iocp的異同  回復  更多評論   

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

            2011-08-01 10:45 | 袁斌
            午夜天堂精品久久久久| 国产精品久久自在自线观看| 91久久福利国产成人精品| 一级做a爰片久久毛片看看| 久久久久亚洲AV无码去区首| www亚洲欲色成人久久精品| 久久亚洲欧美日本精品| 99久久人妻无码精品系列蜜桃| 久久棈精品久久久久久噜噜| 日本久久久久亚洲中字幕| 久久AV高潮AV无码AV| 欧美大香线蕉线伊人久久| 99久久免费国产精精品| 精品久久一区二区三区| 久久综合综合久久狠狠狠97色88| 亚洲一本综合久久| 久久久久亚洲AV无码专区网站| 久久亚洲国产精品五月天婷| 欧美久久久久久精选9999| 国产精品久久久久一区二区三区| 精品国产乱码久久久久久浪潮| 久久99精品久久久久久不卡| 精品国产婷婷久久久| 国产亚洲美女精品久久久2020| 久久久久人妻一区二区三区vr| 久久人爽人人爽人人片AV| 久久人人爽人人爽人人片AV不 | 久久99精品国产99久久| 伊人色综合久久天天人手人婷| 久久精品人人做人人爽电影| 久久久精品久久久久久| 亚洲人AV永久一区二区三区久久| 伊人久久大香线蕉av不卡| 93精91精品国产综合久久香蕉| 精品久久久久久无码不卡| 国内精品久久久久久久97牛牛| 人人狠狠综合久久亚洲| 久久综合丁香激情久久| 久久这里只有精品18| 亚洲午夜精品久久久久久app| 97精品伊人久久大香线蕉app|