ACE框架reactor同步问题求助?

问题描述

ACE框架reactor同步问题求助?
//小弟在ACE reactor框架中开启一个定时器和一个接受器,代码如下:
class Timer: public ACE_Event_Handler

{
virtual int handle_timeout (const ACE_Time_Value &current_timeconst void *act = 0);
}

int ACE_TMAIN(int argcACE_TCHAR *argv[])
{

Sgl_Timer::instance()->reactor(ACE_Reactor::instance());
Sgl_Timer::instance()->RegisterTimer(ACE_Time_Value(asDelay0)ACE_Time_Value(beepIntval0));
ACE_Acceptor _acceptor;
if( -1 == _acceptor.open(_addr) )

{
ACE_ERROR((LM_ERRORAcceptor open fail!
""));
return -1;
}

return ACE_Reactor::instance()->run_reactor_event_loop(); //事件分发循环
}

小弟想在定时器中handle_timeout方法做WaitForSingleObject(hMutexINFINITE);事件同步(阻塞等待),但这样好像_acceptor根本不能接收消息,它们是同一个线程吗?怎么破?各们大牛帮帮忙,谢谢啦!

解决方案

handle_timeout 阻塞会阻塞整个定时器,你如果要等待,应该是其他地方等待,或者开一个线程来专门等待hMutex,然后事件触发了,再做你的工作。
定时器等让它们一直运行。

解决方案二:
使用ACE Reactor框架编程
使用ACE Reactor框架编程

时间: 2024-10-30 14:31:44

ACE框架reactor同步问题求助?的相关文章

ACE反应器(Reactor)模式的深入分析_C 语言

反应器(Reactor):用于事件多路分离和分派的体系结构模式通常的,对一个文件描述符指定的文件或设备, 有两种工作方式: 阻塞与非阻塞.所谓阻塞方式的意思是指, 当试图对该文件描述符进行读写时, 如果当时没有东西可读,或者暂时不可写, 程序就进入等待状态, 直到有东西可读或者可写为止.而对于非阻塞状态, 如果没有东西可读, 或者不可写, 读写函数马上返回, 而不会等待. 在前面的章节中提到的Tcp通信的例子中,就是采用的阻塞式的工作方式:当接收tcp数据时,如果远端没有数据可以读,则会一直阻塞

qt框架如何同步方式进行http请求的实例

这几天在做基于Qt的remeber the milk应用,刚开始为了简单,没有将实现rtm api的类继承自QObject,这样就没法通过在类中添加槽函数,来连接QNetworkAccessManager的信号来判断是否已经下载.所以要找一种阻塞等待的方式. 首先尝试了QNetworkReply中的isFinished()函数,通过while循环判断reply是否已经结束,结束后再调用readAll函数读取http响应信息.结果使程序进入了无限循环,导致应用没有响应.而且奇怪的是在无限循环中间,

C++ POCO库中文编程参考指南(11) 如何使用Reactor框架?

1 Reactor 框架概述 POCO 中的 Reactor 框架是基于 Reactor 设计模式进行设计的.其中由 Handler 将某 Socket 产生的事件,发送到指定的对象的方法上,作为回调. 2 光说不练假把式 PoechantReactorServer 类,基本与 PoechantTCPServer: class PoechantReactorServer: public ServerApplication { public: PoechantServer() {} //: _he

微软同步框架(MSF)入门之三--分析生成的同步类文件

在前两篇文章当中,我介绍了SnapShot(快照方式)和"只同步新更改和增量更改"这两种同步方式.将使用设计器同步向导生成了两个相应的DEMO.今天我们会一起分析一下这两个DEMO中相应的同步文件内容和相互差异. 首先要分析的DEMO是"只同步新更改和增量更改",我们用VS2008打开DEMO的解决方案方案,如下图: 之前所说的关于MSF为我们生成的主要的类代码就保存在了BiDirectSyncData.sync文件中,下面先分析一下BiDirectSyncData

开始学习ACE

一.ACE综述 ACE自适配通信环境(ADAPTIVE Communication Environment)是可以自由使用.开放源码的面向对象(OO)框架(Framework),在其中实现了许多用于并发通信软件的核心模式.ACE提供了一组丰富的可复用C++ Wrapper Facade(包装外观)和框架组件,可跨越多种平台完成通用的通信软件任务,其中包括:事件多路分离和事件处理器分派.信号处理.服务初始化.进程间通信.共享内存管理.消息路由.分布式服务动态(重)配置.并发执行和同步,等等.  A

ACE与ASIO之间关于Socket编程的比较

ACE是一个很成熟的中间件产品,为自适应通讯环境,但它过于宏大,一堆的设计模式,架构是一层又一层,对初学者来说,有点困难.ASIO是基本Boost开发的异步IO库,封装了Socket,简化基于socket程序的开发. 最近分析ASIO的源代码,让我无不惊呀于它设计.在ACE中开发中的内存管理一直让人头痛,ASIO的出现,让我看到新的曙光,成为我新的好伙伴.简单地与ACE做个比较. 1.层次架构:ACE底层是C风格的OS适配层,上一层基于C++的wrap类,再上一层是一些框架(Accpetor,

enode框架入门:Command Service API设计思路

上一篇文章,介绍了enode框架的物理部署思路.本文我们再简单分析一下Command Service的API设计: Command Service在enode框架中的地位非常重要,用户使用enode框架的主入口就是command service .UI层如controller会通过发送command给command service,然后框架就开始处理该command.不然看出, command service有可能会被高并发的访问.那么command service该提供什么样的API呢? 首先

jQuery同步提交示例代码_jquery

本文实例讲述了jQuery同步提交的方法.分享给大家供大家参考,具体如下: 使用jQuery 框架,同步提交演示 在一些严格检测或者递归.循环调用的情况下,如果不能同步返回数据则可能会出现错误结果,所以需要使用同步提交技术,jQuery默认是异步操作,需要显式设置异步属性async为false,便可以实现同步. 自定 data 提交 function GroupCheck(url, operate, check, group, joker) { var result = -1; $.ajax(

福利到!Rafy(原OEA)领域实体框架 2.22.2067 发布!

距离"上次框架完整发布"已经过去了一年半了,应群中的朋友要求,决定在国庆放假之际,把最新的框架发布出来,并把帮助文档整理出来,这样可以方便大家快速上手.     发布内容 注意,本次发布,只包含 Rafy 框架中的领域实体框架及相关文档.不包含"界面自动生成"等其它组件. 安装新的发布包:<使用 NuGet 下载最新的 Rafy 框架及文档>. 网页版用户手册(实时更新):<http://zgynhqf.github.io/Rafy>. 老版