linux下ACE使用epoll

select和epoll的比較就不用多說了。ACE在linux下默認使用select來實現Reactor的。如何在linux下讓ACE使用epoll。html

1.加一個編譯宏,告訴ACE不要使用默認的select,而是用EVENT_POLL。react

2.而後從新編譯ACE的工程。linux

3.在你的程序中使用時: shell

 
#include "ace/Dev_Poll_Reactor.h"
    ACE_Dev_Poll_Reactor dev_reactor(4000); // 系統對每一個進程打開文件的限制,ulimit -n
    ACE_Reactor reactor(&dev_reactor);      // 4000爲最大的打開數目
    ACE_Reactor::instance(&reactor);

4. 從新編譯你的程序便可ide

 

你可能會遇到下面的錯誤:spa

錯誤:ACE_Dev_Poll_Reactor::open failed inside ACE_Dev_Poll_Reactor::CTOR:code

這個是linux的一些限制,能夠配置新的值。EPOLL能處理的最大描述符數受用戶可打開的最大描述符數限制,通常默認1024,可用ulimit -a查看,
     修改方法兩個:htm

1.ulimit -n 5120 #每次登陸到shell都要修改,只對本次登陸有效。進程

2.用ROOT用戶修改/etc/security/limits.conf,添加如下兩行,而後從新登陸便可。修配配置文件後全局有效。rem

*     soft   nofile    5120
*     hard   nofile    10240
相關文章
相關標籤/搜索