• <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)計(jì)

            最新評(píng)論

            epoll使用介紹

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

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

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

            epoll使用

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

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

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

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

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

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

            評(píng)論

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

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

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

            我的Email是zangws@iceflow.cn , QQ是10793356, 方便可以切磋切磋  回復(fù)  更多評(píng)論   


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            日本久久久久久中文字幕| 欧美激情精品久久久久久久九九九| 色婷婷狠狠久久综合五月| 久久夜色撩人精品国产| 免费精品久久天干天干| 久久精品中文无码资源站| 青青热久久综合网伊人| 合区精品久久久中文字幕一区| 欧美成人免费观看久久| 日韩精品久久久肉伦网站 | 久久久久久夜精品精品免费啦| 久久久91精品国产一区二区三区| 久久天天躁狠狠躁夜夜2020老熟妇 | 狠狠干狠狠久久| 无码伊人66久久大杳蕉网站谷歌| 国产亚洲美女精品久久久久狼| 久久久久人妻一区二区三区| 国产午夜精品理论片久久| 日韩人妻无码精品久久免费一| 日本亚洲色大成网站WWW久久| 久久美女网站免费| 久久天天躁狠狠躁夜夜96流白浆| 亚洲人成无码www久久久| 久久这里只精品国产99热| 久久天天躁狠狠躁夜夜不卡| 久久强奷乱码老熟女网站| 狠狠人妻久久久久久综合蜜桃 | 久久伊人中文无码| 久久91精品国产91久久户| 久久精品人成免费| 亚洲AV无码久久精品蜜桃| 久久笫一福利免费导航| 香蕉久久影院| 蜜桃麻豆www久久国产精品| 国产精品成人无码久久久久久 | 色99久久久久高潮综合影院| 91精品国产91热久久久久福利 | 国产99久久九九精品无码| 亚洲国产精品人久久| 精品免费久久久久国产一区| 久久99精品久久久久久齐齐|