acedev 发表于 2010-5-27 11:05:06

请教消息用法,如何表示工作请求、工作结果或是其它

在ACE_Task对象间传递消息时会用到ACE_Message_Block。
消息可以表示工作请求、工作结果或是其它要处理的数据类型。
这就涉及到 Message_Block 与 数据类型 之间的转换,
对于简单的类型 目前采用的方法是: 数据对象 序列化到字符串 再复制到消息块数据区 ;使用时从数据区取出字符串还原为数据对象。

问题1:
如果需要在多个对象之间传递该消息,会有多次转换还原操作,这样是不是比较浪费,各位经常怎么做的?

问题2:
另外在C++NPv2 P197 P199 看到这样的用法
ACE_NEW_RETURN(mblk,ACE_Message_Block(ACE_reinterpret_cast(char*, Handler*)

ACE_reinterpret_cast(Handler*, mblk->rd_ptr());
是不是 reinterpret_cast 除了能把指针重新映射为char*   也能把 对象 转为 char*

谢谢 补充:序列化用的是boost库的serialization

[ 本帖最后由 acedev 于 2010-5-27 11:11 编辑 ]

winston 发表于 2010-5-27 12:52:02

我想你误解了,ACE_Message_Block是容器,用于各组件之间的数据传递和衔接,与序列化无关。
你可以把它想象成“胶水”。其实你往里面填充什么东西都可以,因为是你自己负责解析处理的呀。
好好理解这个,很重要。你查看一下本站我贴的,有关ACE_Message_Block文章。

acedev 发表于 2010-5-28 11:08:47

我是把message_block理解为自动管理大小的内存块,里面存的字符,当成字符串来解析处理,因此用到了序列化,这样解析d 起来可以使用类的方法。

仔细看了下message_block的头文件认识还是停留在操作字节上;并注意到注释部分提到参考 C++NPv1 section 4.2和 APG section 12.3.2 发现我的APG只有9章 共153页 需要看下完整版本

没找到winston提到的那篇帖子使用关键字 ace_message_block winston site:acejoy.com 倒是看了很多相关的回复


原帖由 <i>winston</i> 于 2010-5-27 12:52 发表 <a href="http://www.acejoy.com/bbs/redirect.php?goto=findpost&pid=7169&ptid=2290" target="_blank"><img src="http://www.acejoy.com/bbs/images/common/back.gif" border="0" onload="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open(this.src);}" onmousewheel="return imgzoom(this);" alt="" /></a><br />
我想你误解了,ACE_Message_Block是容器,用于各组件之间的数据传递和衔接,与序列化无关。<br />
你可以把它想象成“胶水”。其实你往里面填充什么东西都可以,因为是你自己负责解析处理的呀。<br />
好好理解这个,很重要。你查看一下本 ... <br />

acedev 发表于 2010-5-28 11:29:40

完整版

英文版的 原来文件后缀名是 .download
修改为.chm后只能看到目录

解压出来可以看到 很多.html


哪位能够修复下最好了

freeeyes 发表于 2010-5-28 14:02:39

我给你一个完整的吧,.download需要一个工具去生成。

acedev 发表于 2010-5-28 15:10:26

看完12.3.3节 IntertaskCommunication 还是认为message_block的data_block里存的是字符串
需要复杂的手工解析   

现在传递的消息里包含了 list<string> 是不是复杂了


这个chm出现与.download同样的问题 打开只能看到目录

在另外一台机器上可以正常打开

猜测是chm用ie导航 ie出问题 没有去证实

原帖由 freeeyes 于 2010-5-28 14:02 发表
我给你一个完整的吧,.download需要一个工具去生成。
页: [1]
查看完整版本: 请教消息用法,如何表示工作请求、工作结果或是其它