你有几个邮箱呢?你是怎么分配它们的用途呢?码云账号增加多邮箱支持!
指数
0
Watch 20 Star 31 Fork 8

stallion5632 / MessageWaitC++

加入码云
与超过 300 万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
设计一个等待消息响应的模块:当收到等待的消息时,调用回调函数;当在规定时间内没收到时,调用超时响应函数。 展开 收起

克隆/下载
liudegui 最后提交于 Update README.md
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README.md

#MessageWait

设计思路

基于消息的程序架构中,在发送一个request消息后可能会遇到这样的情况

  • 1) 等到response消息,其中response分为肯定回答和否定回答。
  • 2) 在规定时间内没有收到回复。

往往我们的业务中需要等到这两个结果后再继续执行下面的业务,因而我提供了两种解决办法:

  • 一种是同步方法,在发送request消息后挂起当前线程,当收到消息或者超时后激活当前线程,根据返回结果,继续处理剩下的业务;
  • 另一种是异步方法,采用回调的方法调用响应函数,维护一个定时器,不停检查是否有超时消息产生,并调用对应回调函数。

详细流程请查看doc目录中的word文档

异步消息等待的限制

如果相同的request消息在间隔很短的时间内发送出去,并且它们的回调函数不一样(也可能是附带的临时数据不一样),

当有response返回时,该模块无法判断response消息是属于哪个消息的,即无法判断先后顺序。

而这个问题在同步消息等待模块中不会出现。

说明

该模块本身是支持windows和Linux模块的,但是我只提供了vs2010工程。

使用到了poco库和boost库,使用poco库的部分完全可以使用boost代替。

引用的boost和poco库由于比较大,因而没有上传,需要读者自己去下载,工程路径也需要根据实际修改。 boost库下载地址,poco库下载地址

点评 ( 0 )

你可以在登录后,发表评论

搜索帮助