1. 使用 ace 5.4.5 的 proactor 框架,在 windows 上工作特别好,但是到了 linux 上, ACE_Service_Handler 的子类 中调用 ACE_Asynch_Write_Stream.write() ,write 调用成功来发送数据,但总是没有触发 handle_write_stream 这个方法,导致数据总是没有发送到对方,导致异步发送数据彻底失败
ace 5.4.5+red fc6
2. 使用 ace 5.5 ,到 windows 上,一启动程序,就进入了死循环,下面代码如下:
//ACE_Asynch_Acceptor<P2P_Tcp_EventHandler> pAcceptor_;
ACE_INET_Addr listen_addr(port, localtcpip.c_str());
if (0 != pAcceptor_->open (listen_addr,
0,
1,
ACE_DEFAULT_BACKLOG,
1,
ACE_Proactor::instance (),
1))
ACE_ERROR_RETURN ((LM_ERROR, ACE_TEXT ("%p\n"),ACE_TEXT ("acceptor open")), 1);

最新回复
解决方案:你用非官方的Proactor实现,据称测试良好。本站有文章,自己搜索查一下。
用Reactor,ACE_Dev_Poll_Reactor也很不错,底层用的是Epoll.
第二个问题没法回答,你给的相关信息太少了。
2. 目前 ace 的两大分离器(ace_reactor 和ace_proactor) ,ace_proactor 在 linux 上应该
说有很大的问题,这次我们算是服了. ace_reactor 是基本的分离器,性能很差,需要跨平台
并提高性能的话,需要使用各平台的子类,比如 ACE_Dev_Poll_Reactor,WCE_WM_Reactor,等
这样搞得也是麻烦
3. 还有,你说得 aio 补丁问题,我也纳闷,要知道是使用得是 red linx fc 6 ,基本是最新得
linux 了,内核也是 2.6 的晚期版本了,aio 错误也应该更新了
有什么办法可以使用一种分离器,在多个平台稳定运行,性能也不错得啊