(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 编辑 ] 当然,如果你用默认的Proactor,最后的参数可以不设置。
我这里开启以后,CPU一直在0%左右,当有链接的时候,CPU会和数据处理的线程的繁忙度成正比。 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 编辑 ] 欢迎大家试用我的epoll proactor啊,
http://acejoy.com/bbs/viewthread.php?tid=1517&extra=page%3D1
这几天在实现ACE_Asynch_Read_File和ACE_Asynch_Write_File,估计本周可以完成发上来
计划在下一个实际项目中采用这个epoll proactor,所以我会努力保证质量的
回复 #14 wishel 的帖子
支持wishel. 因为最近自己变动比较大. 并且正在学习一些东西,所以太忙了. 等闲暇一点. 我会帮你测试的.[ 本帖最后由 sugar 于 2010-5-18 13:31 编辑 ]
回复 #15 sugar 的帖子
谢谢!:handshake[ 本帖最后由 wishel 于 2010-5-18 14:14 编辑 ] LZ 我也曾经碰到这个问题,
5.7.0的ACE_Dev_Poll_Reactor是存在这个问题,在多线程并发下,CPU占100%.
但单线程是正常的.
程序debug下貌似是Token锁的释放出了问题.
5.7.7已经发布了吧.我记得邮件列表里都在讨论5.7.8了
页:
1
[2]