ACE定时器用在MFC和动态库中遇到问题,请各位进来瞅瞅
大家好:最近要使用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的初始化工作,所以应该不是初始化出现问题的,请大家看看,是什么原因,多谢了!~~ 有代码有真相。猜不出。上代码。 ACE::init()调用了么? 已经找出问题了,是反应堆创建线程和运行线程不同造成的,使用owner(...)就可以了,多谢大家的回帖
页:
[1]