ACE学习笔记(三)--消息队列(操作)
2011-10-08 16:11
176 查看
每个ACE_Message_Block都有两个底层指针:rd_prt,wr_ptr,用于在消息块中读写数据。可以通过rd_ptr()和wr_ptr()方法来直接访问。
rd_ptr指向下一次读取数据的位置,wr_ptr指向下一次写入数据的位置。这两个指针不会自动更新,程序员必须自己来增加他们的值!!!
拷贝函数 int copy(const char *buf,size_t n); buf指向要拷贝进消息块的缓冲区的指针,n指要拷贝数据的大小,该方法从wr_ptr指向的位置开始往前 写,并且保证wr_ptr的更新,使其指向缓冲区的新末尾处。
base()和length()方法可以联合使用,以将消息块中的整个数据缓冲区拷贝出来。
base()返回指向数据块的第一个数据条目的指针,
length()返回队中数据的总大小。 base和length相加,可以得到指向数据块末尾的指针。
duplicate()和clone()方法用于制作消息块的“副本“。
clone()方法实际的创建整个消息块的新副本,包括他的数据块和附加部分。
duplicate()方法使用ACE_Message_Block的引用计数机制,返回指向要被复制的消息块的指针,并在内部增加内部引用计数。
release()释放消息块 ,如果消息数据内存石油该消息块分配的,调用release()方法就会释放此内存。如果消息块是引用计数的,release()就会减少计数,直到0为止。
rd_ptr指向下一次读取数据的位置,wr_ptr指向下一次写入数据的位置。这两个指针不会自动更新,程序员必须自己来增加他们的值!!!
拷贝函数 int copy(const char *buf,size_t n); buf指向要拷贝进消息块的缓冲区的指针,n指要拷贝数据的大小,该方法从wr_ptr指向的位置开始往前 写,并且保证wr_ptr的更新,使其指向缓冲区的新末尾处。
base()和length()方法可以联合使用,以将消息块中的整个数据缓冲区拷贝出来。
base()返回指向数据块的第一个数据条目的指针,
length()返回队中数据的总大小。 base和length相加,可以得到指向数据块末尾的指针。
duplicate()和clone()方法用于制作消息块的“副本“。
clone()方法实际的创建整个消息块的新副本,包括他的数据块和附加部分。
duplicate()方法使用ACE_Message_Block的引用计数机制,返回指向要被复制的消息块的指针,并在内部增加内部引用计数。
release()释放消息块 ,如果消息数据内存石油该消息块分配的,调用release()方法就会释放此内存。如果消息块是引用计数的,release()就会减少计数,直到0为止。
相关文章推荐
- 消息队列 rabbitMQ 的一些操作
- Linux下消息队列操作
- linux消息队列操作
- Linux消息队列操作
- C#操作消息队列
- C#操作消息队列
- C#操作消息队列的代码开发者在线 Builder.com.cn 更新时间:2008-07-20作者: 来源:
- php中对共享内存,消息队列的操作
- 基于C#的IBM消息队列操作客户端
- Posix消息队列的基本操作——创建或打开
- Python操作RabbitMQ服务器实现消息队列的路由功能
- c#中如何操作消息队列
- linux消息队列相关操作
- C#操作消息队列
- C#操作MSMQ向本地消息队列发送和接收消息
- WCF MSMQ消息队列与离线操作
- PHP下操作Linux消息队列完成进程间通信的方法
- [置顶] Redis应用3-基于Redis消息队列实现的异步操作
- linux消息队列操作
- c#中如何操作消息队列