找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 3271|回复: 1

关于ACE程序员指南上的一个示例程序

[复制链接]
发表于 2007-12-31 22:19:07 | 显示全部楼层 |阅读模式
  1. #include <ace/Reactor.h>
  2. #include <ace/Event_Handler.h>
  3. #include <ace/Synch_T.h>
  4. #include <ace/Thread_Manager.h>
  5. class My_Handler: public ACE_Event_Handler
  6. {
  7. public:
  8. //Start the event handling process.
  9. My_Handler()
  10. {
  11.   ACE_DEBUG((LM_DEBUG,"Got open\n"));
  12.   activate_threads();
  13.   ACE_Reactor::instance()->max_notify_iterations(10);
  14. }
  15. //Spawn a separate thread so that it notifies the reactor
  16. void activate_threads()
  17. {
  18.   ACE_Thread_Manager::instance()->spawn((ACE_THR_FUNC)svc_start,(void*)this);
  19. }
  20. //Notify the Reactor 10 times.
  21. void svc()
  22. {
  23.   for(int i=0;i<10;i++)
  24.    ACE_Reactor::instance()->notify(this, ACE_Event_Handler::READ_MASK);
  25. }
  26. //The actual handler which in this case will handle the notifications
  27. int handle_input(int)
  28. {
  29.   ACE_DEBUG((LM_DEBUG, "Got notification # %d\n", no));
  30.   no++;
  31.   return 0;
  32. }
  33. //The entry point for the new thread that is to be created.
  34. static int svc_start(void* arg);
  35. private:
  36. static int no;
  37. };
  38. //Static members
  39. int My_Handler::no=1;
  40. int My_Handler::svc_start(void* arg)
  41. {
  42. My_Handler *eh= (My_Handler*)arg;
  43. eh->svc();
  44. return -1; //de-register from the reactor
  45. }
  46. int main(int argc, char *argv[])
  47. {
  48. ACE_DEBUG((LM_DEBUG,"Starting test \n"));
  49. My_Handler handler;
  50. while(1)
  51. {
  52.   ACE_Reactor::instance()->handle_events(ACE_Time_Value(3));
  53. }
  54. }
复制代码
win32平台下不能正常运行,有调试过的吗?ACE5.5版本,编译器是vc6,c++库用的stlport4.6.2
 楼主| 发表于 2007-12-31 22:19:20 | 显示全部楼层
书上具体哪个示例程序我没有找到,但是,错误应该出在handle_input()上,把"int handle_input(int)"改成"virtual int handle_input(ACE_HANDLE)"就可以了,因为handle_input()是个挂钩方法,所以,上面的例子那样写是的不到结果的
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-12-23 03:59 , Processed in 0.018943 second(s), 7 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表