ACE学习笔记(二)--消息队列(简介)
来源:互联网 发布:.商标域名注册官网 编辑:程序博客网 时间:2024/05/16 10:13
在ACE中,消息作为消息块(Message Block)被放入消息队列中。每个消息块“(类名为ACE_Message_Block)包含”一个头和一个数据块。它持有指向两者的指针,包含只是逻辑上的。数据块(类名为ACE_Data_Block)持有指向实际的数据缓冲区的指针。这样的设计带来了多个消息块之间的数据的灵活共享,无需带来数据拷贝的开销就可以将同一数据放入不同的队列中。
ACE_Message_Block的构造器:
消息块的构造器允许:创建并传入你自己的指向消息数据的数据块、传入指向消息数据的指针,消息块将创建并设置底层的数据块。
下面的例子岩石怎样将指向消息数据的指针传给消息块,以及ACE_Message_Block怎样创建和管理底层的ACE_Data_Block:
该构造器创建底层数据块,并将它设置为指向传递给它的数据的开头。被创建的消息块并不拷贝该数据,也不假定自己拥有它的所有权。这就意味着在消息块mb被销毁时,相关联的数据缓冲区data将不会被销毁。这是有意义的:消息块没有拷贝数据,因此内存也不是它分配的,这样它也不应该负责销毁它。
ACE_Message_Block的构造器:
ACE_Message_Block的构造器为:
ACE_Message_Block (size_t size, //数据缓冲区大小
ACE_Message_Type type = MB_DATA, //消息类型
ACE_Message_Block *cont = 0, //指向“片段链”中的下一个消息块的指针,缺省值为0,表示不使用链
const char *data = 0, //指向要存储在此消息块中的数据缓存区的指针,若为0,则根据 size创建缓存区,并由该消息块管理,同生死
//若不为空,消息块被销毁时它不会删除数据缓存区。牢记!!!
ACE_Allocator *allocator_strategy = 0, //分配数据缓存的分配策略,在第四个参数为空时使用
ACE_Lock *locking_strategy = 0, //锁策略,不为0,用于保护访问共享状态的代码区
u_long priority = 0, //这三个参数用于ACE中的实时消息队列的调度,保留缺省值
const ACE_Time_Value & execution_time = ACE_Time_Value::zero,
const ACE_Time_Value & deadline_time = ACE_Time_Value::max_time);
ACE_Message_Block (size_t size, //数据缓冲区大小
ACE_Message_Type type = MB_DATA, //消息类型
ACE_Message_Block *cont = 0, //指向“片段链”中的下一个消息块的指针,缺省值为0,表示不使用链
const char *data = 0, //指向要存储在此消息块中的数据缓存区的指针,若为0,则根据 size创建缓存区,并由该消息块管理,同生死
//若不为空,消息块被销毁时它不会删除数据缓存区。牢记!!!
ACE_Allocator *allocator_strategy = 0, //分配数据缓存的分配策略,在第四个参数为空时使用
ACE_Lock *locking_strategy = 0, //锁策略,不为0,用于保护访问共享状态的代码区
u_long priority = 0, //这三个参数用于ACE中的实时消息队列的调度,保留缺省值
const ACE_Time_Value & execution_time = ACE_Time_Value::zero,
const ACE_Time_Value & deadline_time = ACE_Time_Value::max_time);
消息块的构造器允许:创建并传入你自己的指向消息数据的数据块、传入指向消息数据的指针,消息块将创建并设置底层的数据块。
下面的例子岩石怎样将指向消息数据的指针传给消息块,以及ACE_Message_Block怎样创建和管理底层的ACE_Data_Block:
//数据块
char data[size];
data = "This is my data";
//创建消息块去管理数据块
ACE_Message_Block *mb = new ACE_Message_Block(data,blocksize)
char data[size];
data = "This is my data";
//创建消息块去管理数据块
ACE_Message_Block *mb = new ACE_Message_Block(data,blocksize)
- ACE学习笔记(二)--消息队列(简介)
- ACE学习笔记(二)--消息队列(简介)
- ACE学习笔记(三)--消息队列(操作)
- ACE学习笔记(三)--消息队列(操作)
- ACE 学习 之 消息队列
- 消息队列-ActiveMQ学习笔记(二)-点对点消息实现
- 消息队列-ActiveMQ学习笔记(二)-点对点消息实现
- ACE学习笔记(二)
- ACE消息队列
- 消息队列学习笔记
- MSMQ消息队列学习笔记(一)
- RabbitMQ(消息队列)私人学习笔记
- Rabbit五种消息队列学习(二) -- 简单队列
- Net消息队列学习(二)
- ACE学习笔记二(开发聊天程序)
- 学习笔记之消息队列
- Windows消息队列学习笔记
- MQ(消息队列)简介
- 如何解决ASP.NET中中文不能正常显示问题
- javaIO包的使用
- BCMSN学习笔记1
- 一次 Outlook 2003 无法收取邮件的故障解决
- 更改 IE 收藏夹 位置
- ACE学习笔记(二)--消息队列(简介)
- 服务器应用程序不可用解决方案集
- 实例分析-在FLASH上构造JFFS2文件系统
- viewport and transformation
- 坚持的价值
- 二OO七春节假期 新的思考
- Microsoft打算使用HD Photo来代替JPEG
- Java常用术语解释
- GDC07的一些看法