ACE-Task结构介绍(二)——消息块ACE_Message_Block结构的分析
消息块ACE_Message_Block结构的分析
- 包含一个指向带引用计数功能的ACE_Data_Block对象,该对象指向正在的数据缓冲区,这样可以在ACE_Message_Block对象之间灵活、高效地共享数据
- 一个或多个ACE_Message_Blocks对象可以连接起来组成一条链
- ACE_Message_Blocks对象可以连接起来组成一个双向的链表,进而形成消息队列
class ACE_Export ACE_Message_Block
{
public:
friend class ACE_Data_Block;
/*******************************************************
* 函数声明
*******************************************************/
/// Pointer to beginning of next read.
/// 数据读指针,实际上是一个相对起始地址的偏移量
size_t rd_ptr_; /// Pointer to beginning of next write.
/// 数据写指针,实际上是一个相对起始地址的偏移量
size_t wr_ptr_; /// Priority of message.
/// 表示消息的优先级,用于优先级消息队列
unsigned long priority_; #if defined (ACE_HAS_TIMED_MESSAGE_BLOCKS)
/// Execution time associated with the message.
/// 消息块的时间属性,用于实时消息队列
ACE_Time_Value execution_time_; /// Absolute deadline time for message.
ACE_Time_Value deadline_time_;
#endif /* ACE_HAS_TIMED_MESSAGE_BLOCKS */ // = Links to other ACE_Message_Block *s.
/// Pointer to next message block in the chain.
/// 消息链指针,多个消息块可以连在一起,构成一个消息块链
ACE_Message_Block *cont_; /// Pointer to next message in the list.
/// 表示后一个消息指针
ACE_Message_Block *next_; /// Pointer to previous message in the list.
/// 前一个消息指针
ACE_Message_Block *prev_; /// Misc flags (e.g., DONT_DELETE and USER_FLAGS).
/// 是ACE_Data_Block删除标志,表示该实例下的data_block_是否要删除
ACE_Message_Block::Message_Flags flags_; /// Pointer to the reference counted data structure that contains the
/// actual memory buffer.
/// 数据块指针
ACE_Data_Block *data_block_; /// The allocator used to destroy ourselves when release is called
/// and create new message blocks on duplicate.
/// 消息块内存分配器
ACE_Allocator *message_block_allocator_; private:
// = Disallow these operations for now (use <clone> instead).
ACE_Message_Block &operator= (const ACE_Message_Block &);
ACE_Message_Block (const ACE_Message_Block &);
};
- 每次写入数据时,写指针会偏移实际写入数据的长度,每次读出数据时,读指针会偏移实际读出数据的长度。它们的差就是当前消息块中含有的数据量。
- ACE_Message_Block和ACE_Data_Block结构关系如图所示

ACE-Task结构介绍(二)——消息块ACE_Message_Block结构的分析的更多相关文章
- (3.1)mysql基础深入——mysql二进制与源码目录结构介绍
(3.1)mysql基础深入——mysql二进制与源码目录结构介绍 关键字:二进制目录结构,源码目录结构(编译安装目录结构) 1.二进制安装程序目录结构 [1] BIN -- mysql的可执行文件( ...
- Linux设备驱动--块设备(二)之相关结构体
上回最后面介绍了相关数据结构,下面再详细介绍 块设备对象结构 block_device 内核用结构block_device实例代表一个块设备对象,如:整个硬盘或特定分区.如果该结构代表一个分区,则其成 ...
- Linux设备驱动--块设备(二)之相关结构体(转)
上回最后面介绍了相关数据结构,下面再详细介绍 块设备对象结构 block_device 内核用结构block_device实例代表一个块设备对象,如:整个硬盘或特定分区.如果该结构代表一个分区,则其成 ...
- 二、VUE项目BaseCms系列文章:项目目录结构介绍
一. 目录结构截图 二. 目录结构说明 - documents 存放项目相关的文档文件 - api api 数据接口目录 - assets 资源文件目录 - components ...
- V4L2学习(二)结构介绍
v4l2_device v4l2_device在v4l2框架中充当所有v4l2_subdev的父设备,管理着注册在其下的子设备.以下是v4l2_device结构体原型(去掉了无关的成员): struc ...
- Magento学习第一课——目录结构介绍
Magento学习第一课--目录结构介绍 一.Magento为何强大 Magento是在Zend框架基础上建立起来的,这点保证了代码的安全性及稳定性.选择Zend的原因有很多,但是最基本的是因为zen ...
- 上门洗车APP --- Androidclient开发 之 项目结构介绍
上门洗车APP --- Androidclient开发 之 项目结构介绍 前言 尽管公司项目较紧,但还是抽空给大家继续更新. o_O"~ 欢迎大家的关注,非常高兴和大家共同学习.前面给大家分 ...
- Oracle数据库基础入门《二》Oracle内存结构
Oracle数据库基础入门<二>Oracle内存结构 Oracle 的内存由系统全局区(System Global Area,简称 SGA)和程序全局区(Program Global Ar ...
- [转帖]B树索引和位图索引的结构介绍
B树索引和位图索引的结构介绍 http://blog.itpub.net/12679300/viewspace-1174236/ 一 前言:? ROWID:包含键值的行的行ID,(查找块的最快方法, ...
随机推荐
- windows下eclipse搭建android_ndk开发环境
安装cygwin: 由于NDK编译代码时必须要用到make和gcc,所以你必须先搭建一个linux环境, cygwin是一个在windows平台上运行的unix模拟环境,它对于学习unix/linux ...
- windows远程连接Ubuntu12.04 (Ubuntu14.0连接方式不一样)
参考 http://www.cnblogs.com/jerome-rong/archive/2012/08/16/2642035.html 有两种方式:Vnc方式(优缺点)和xrdp模式 中提到的Vn ...
- Java基础学习——多线程之创建任务
这次来盘点一下Java中用线程执行任务的写法. 1.扩展Thread 最基本的实现方法是在创建一个继承Thread的新类,在其中覆盖run()方法执行任务. public class MyThread ...
- [转]在eclipse打开的android虚拟手机,打开File Explorer,下面是空的没有data、mnt、system三个文件
在eclipse打开的android虚拟手机,打开File Explorer,下面是空的没有data.mnt.system三个文件 这是因为模拟器没有选择打开的缘故,必须首先打开一个模拟器(AVD), ...
- 关于arcgi s_api_for_flex的总结
1.flex 的简介 a) Flex是adobe开发的东西,主要特点就是开发一个swf格式的应用,flex可以做桌面的应用和web的应用,但本质差不多. b) Flex采用mxml的格式来进行应用的布 ...
- js实现大转盘抽奖游戏实例
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- DC-DC converter Control techniques
As shown in figure 3.4, PWM controller contains two main parts; voltage error-amplifier and voltage ...
- wpf 分别用 xaml 和后台代码实现 色彩渐变
xaml 方法: <Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.micros ...
- 设置启用mysql慢查询日志
--设置log文件位置 set global slow_query_log_file = /sql_log/slow_log.log; --设置是否启用记录没有使用索引的sql set global ...
- 如何安装pip、升级pip包。mac下安装包的路径
参考:https://pip.pypa.io/en/stable/installing/ 1.wget -c https://bootstrap.pypa.io/get-pip.py 2.pytho ...