ACE学习笔记(三)--消息队列(操作)

来源:互联网 发布:js 中window事件 编辑:程序博客网 时间:2024/05/22 14:36
    每个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为止。