找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 5610|回复: 3

ACE定时器用在MFC和动态库中遇到问题,请各位进来瞅瞅

[复制链接]
发表于 2009-4-29 19:51:29 | 显示全部楼层 |阅读模式
大家好:
   最近要使用ACE做一个消息分发中心动态库,然后使其被一个MFC应用程序调用,遇到以下问题:
         ACE_Reactor::run_event_loop单独运行在一个线程中
         向ACE_Reactor注册I/O事情时,handle_input和handle_output都可正常被回调,
        而使用schedule_timer触发定时器时,handle_timeout并不能被回调,
       而且我改成使用ACE_Thread_Timer_Queue_Adapter也不能正常工作,
        将其单独做成一个控制台进程,定时器可正常使用,
        想向大家请教一下在MFC中或在动态库中使用ACE的定时器有什么需要注意的?

        我使用了以下两种方法创建ACE_Reactor实例,handle_timeout都不能被回调:
       1,使用全局的反应堆: ACE_Reactor::instance()  (听说做成动态库时不建议使用这种方案 )
       2,自己new一个反应堆, ACE_WFMO_Reactor *wfmo_reactor = new ACE_WFMO_Reactor;
            ACE_Reactor *reactor_ = new ACE_Reactor(wfmo_reactor);

      我已经作了ACE的初始化工作,所以应该不是初始化出现问题的,请大家看看,是什么原因,多谢了!~~
发表于 2009-4-29 20:59:37 | 显示全部楼层
有代码有真相。猜不出。上代码。
发表于 2009-4-30 13:22:50 | 显示全部楼层
ACE::init()调用了么?
 楼主| 发表于 2009-5-3 12:02:07 | 显示全部楼层
已经找出问题了,是反应堆创建线程和运行线程不同造成的,使用owner(...)就可以了,多谢大家的回帖
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

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

GMT+8, 2024-5-6 12:55 , Processed in 0.015671 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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