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

            大龍的博客

            常用鏈接

            統(tǒng)計

            最新評論

            epoll使用介紹

            linux下的epoll較之傳統(tǒng)的select函數(shù)比較其優(yōu)點

                 突破了單進程打開SOCKET描述符最大數(shù)目的限制,select單進程打開FD的數(shù)據(jù)是有限制的,由FD_SETSIZE設(shè)置,默認值是2048,而這在那此需要支持上萬連接數(shù)目的網(wǎng)絡(luò)服務(wù)器來說是不能忍受的,雖然這個限制可以通過修改宏重編譯內(nèi)核,但這會給效率帶來急劇下降,而epoll卻沒有這個限制,理論上打開FD的數(shù)目跟系統(tǒng)內(nèi)在有關(guān);

                另外效率不會隨連接數(shù)的增加而線性下降,它只會對活躍的IO事件進行操作,而select每次調(diào)用返回的是線性掃描的全集,不過在一個高速的網(wǎng)絡(luò)環(huán)境里epoll的性能并不比select高多少,因為大部分的socket基本都是活躍的

            epoll使用

            epoll函數(shù)非常簡單,epoll_create,epoll_ctl,epoll_wait 3個函數(shù),可用man查看具體函數(shù)說明,先使用epoll_create創(chuàng)建一個epoll的句柄,再通過epoll_ctl注冊事件,然后epoll_wait檢測事件的發(fā)生。

            epoll二種工作模式的區(qū)別

            Edge Triggered (ET)、Level Triggered (LT);ET(edge-triggered)是高速工作方式,只支持no-block socket。當IO事件發(fā)生時內(nèi)核通知你后不會再發(fā)送更多的通知,一直到你執(zhí)行的操作導致那個文件描述符事件的改變,如果你不對其進程IO操作,內(nèi)核不會再通知你。Level Triggered (LT)是缺省的工作方式,并且同時支持block和no-block socket.內(nèi)核告訴你一個文件描述符是否就緒了,然后你可以對這個就緒的fd進行IO操作。如果你不作任何操作,內(nèi)核還是會繼續(xù)通知你的,你可以使用EPOLLONESHOT標志來告訴內(nèi)核只通知一次,需注意的是操作完后使用帶有 EPOLL_CTL_MOD標志epoll_ctl修改處理文件描述符

            ET模式使用在epoll_ctl加入事件時使用EPOLLET標志來設(shè)置。ET模式在IO處理時需注意使用非阻塞模式,網(wǎng)上有很多這樣的例子

            ACE及l(fā)ibevent都使用LT模式。而ACE的ACE_Dev_Poll_Reactor反應(yīng)器不支持線程池,雖然其代碼里也類似TP_Reactor通過鎖來互斥epoll_wait 操作,但在多線程應(yīng)用中會出現(xiàn)問題。本人參照TP_Reactort自寫了一個L/F線程池支持的epoll反應(yīng)器,在一個項目中已經(jīng)在使用。

            posted on 2008-12-13 09:49 大龍 閱讀(1155) 評論(2)  編輯 收藏 引用

            評論

            # re: epoll使用介紹 2009-07-20 11:57 freemel

            你好, 能不能提供你寫的epoll反應(yīng)器的代碼學習學習.
            我用select+tp_reactor, 現(xiàn)在想改成epoll, 就擔心epoll不支持多線程  回復  更多評論   

            # re: epoll使用介紹 2009-07-20 11:58 freemel

            我的Email是zangws@iceflow.cn , QQ是10793356, 方便可以切磋切磋  回復  更多評論   

            久久人做人爽一区二区三区| 国内精品久久九九国产精品| 7777久久久国产精品消防器材| 久久综合给久久狠狠97色| 91精品国产综合久久精品| 久久中文字幕视频、最近更新 | 中文字幕精品久久久久人妻| 亚洲va久久久噜噜噜久久| 久久综合丁香激情久久| 狠狠色噜噜色狠狠狠综合久久| 久久精品国产秦先生| 欧美伊人久久大香线蕉综合| 九九久久99综合一区二区| 久久狠狠爱亚洲综合影院| 久久人妻少妇嫩草AV无码蜜桃| 久久久91精品国产一区二区三区| 精品国产日韩久久亚洲| 久久久久久亚洲精品无码| 伊人色综合久久| 久久这里只有精品久久| 精品九九久久国内精品| 色综合久久无码中文字幕| 2021国内精品久久久久久影院| 久久99精品久久久久久齐齐| 国产精品久久久久影院色| 久久精品aⅴ无码中文字字幕重口| 久久久久人妻一区二区三区| 深夜久久AAAAA级毛片免费看 | 亚洲日本久久久午夜精品| 久久一区二区三区99| 午夜福利91久久福利| 性做久久久久久久久浪潮| 亚洲国产高清精品线久久| 超级碰碰碰碰97久久久久| 久久99热这里只频精品6| 亚洲色大成网站www久久九| 久久精品国产2020| 久久亚洲精精品中文字幕| 久久99国产精品99久久| 久久亚洲国产午夜精品理论片| 一本大道久久a久久精品综合|