freeeyes 发表于 2010-5-17 16:07:36

(1)ACE_Dev_Poll_Reactor dev_reactor;在这里推荐使用ACE_Dev_Poll_Reactor dev_reactor(xxx);这样的方法。控制打开socket的数量。
(2)你的Open似乎有点问题。我的写法是:
int nRet = pConnectAcceptor->open(listenAddr, 0, 1, ACE_DEFAULT_ASYNCH_BACKLOG, 1, pProactor);
if(-1 == nRet)
{
        OUR_DEBUG((LM_INFO, " pConnectAcceptor->open[%d] is error.\n", i));
        OUR_DEBUG((LM_INFO, " Listen from [%s:%d] error(%d).\n",listenAddr.get_host_addr(), listenAddr.get_port_number(), errno));
        return false;
}

[ 本帖最后由 freeeyes 于 2010-5-17 16:09 编辑 ]

freeeyes 发表于 2010-5-17 16:11:32

当然,如果你用默认的Proactor,最后的参数可以不设置。
我这里开启以后,CPU一直在0%左右,当有链接的时候,CPU会和数据处理的线程的繁忙度成正比。

sugar 发表于 2010-5-18 11:18:44

to freeeyes:
经过比较我发现我用的是Reactor(反应器)及ACE_Acceptor, 而你所说的是Proactor(前摄器)和ACE_Asynch_Acceptor.
经过测试我觉得可能的确5.7.0版本的ACE_Dev_Poll_Reactor会导致CPU占有率高. 因为其它什么都没有变.只是把ACE_Dev_Poll_Reactor改成ACE_TP_Reactor后CPU就相对比较正常. 我问了其它人用5.6.5版的似乎还比较正常.

[ 本帖最后由 sugar 于 2010-5-18 11:24 编辑 ]

wishel 发表于 2010-5-18 11:36:51

欢迎大家试用我的epoll proactor啊,
http://acejoy.com/bbs/viewthread.php?tid=1517&extra=page%3D1

这几天在实现ACE_Asynch_Read_File和ACE_Asynch_Write_File,估计本周可以完成发上来
计划在下一个实际项目中采用这个epoll proactor,所以我会努力保证质量的

sugar 发表于 2010-5-18 13:29:49

回复 #14 wishel 的帖子

支持wishel. 因为最近自己变动比较大. 并且正在学习一些东西,所以太忙了. 等闲暇一点. 我会帮你测试的.

[ 本帖最后由 sugar 于 2010-5-18 13:31 编辑 ]

wishel 发表于 2010-5-18 14:12:25

回复 #15 sugar 的帖子

谢谢!:handshake

[ 本帖最后由 wishel 于 2010-5-18 14:14 编辑 ]

wendy 发表于 2010-6-2 15:44:53

LZ 我也曾经碰到这个问题,
5.7.0的ACE_Dev_Poll_Reactor是存在这个问题,在多线程并发下,CPU占100%.
但单线程是正常的.
程序debug下貌似是Token锁的释放出了问题.
5.7.7已经发布了吧.我记得邮件列表里都在讨论5.7.8了
页: 1 [2]
查看完整版本: ACE_Dev_Poll_Reactor(5.7.0)导致CPU占有率高?