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