ACE_Message_Block的使用

今天使用ACE的Proactor模式时,发现ACE_Message_Block的需要注意的地方:

1、一般不直接使用ACE_Message_Block创建静态对象,而是new一个对象出来,而释放的时候直接调用release函数即可(谁创建,谁调用),不用delete删除new出来的指针;

2、如果是静态创建的ACE_Message_Block,则不能调用release函数,调用时会报运行时错误。

时间: 2024-08-02 15:12:29

ACE_Message_Block的使用的相关文章

ACE_Message_Block消息数据类

ACE_Message_Block ACE_Message_Block用于构建“固定”和“可变”长度的消息.ACE_Message_Block可以将多条消息连接在一起,形成一个链表,从而支持复合消息.ACE_Message_Block内部结构图如下: 1:ACE_Message_Block初始化与释放 初始化一般用以下操作实现: ACE_NEW_NORETURN (m_pRcvmb,ACE_Message_Block (1024)); ACE_Message_Block* p = new ACE

ACE_Message_Block实现浅析

ACE_Message_Block实现浅析1. 概述ACE_Message_Block是ACE中很重要的一个类,和ACE框架中的重要模式的实现 如ACE_Reactor, ACE_Proactor, ACE_Stream, ACE_Task都有紧密的联系. 换个角度看,ACE_Message_Block实际上已经是这些实现中的重要组成部分.抛开和框架的配合不谈, ACE_Message_Block本身也相当有用,功能强大,用途广泛.ACE_Message_Block的实现中使用了很多技巧和模式,

5 ACE acceptor connector Proactor异步框架

ACE_Acceptor_Connector框架 完成accpet操作 [email protected]:~/ace/AceAcceptorConnector$ cat echo_server.cpp  #include <ace/Svc_Handler.h> #include <ace/SOCK_Stream.h> #include <ace/SOCK_Acceptor.h> #include <ace/Acceptor.h> class Accepto

C++内存泄露的有效预防方法:谁使用,谁删除 (1.2)

内存泄露就是new出来的东西没有delete,我们能够这样:创建动态对象的人虽然使用new来创建对象:使用此对象的人负责释放此内存块. 比如:我和他人共享一个消息队列,他人将消息(new出来的对象)放到消息队列中,他不负责释放:我从消息队列里取消息,我一旦从消息队列里取出一个消息,消息队列里就不再有这个消息,消息的控制权和全部权都在我手上,我在用完之后就应该delete.这样就保证了代码编写的简单话,仅仅要大家都尊周这个简单的方法就能够保证没有内存泄露. 再比如:ACE中有个ACE_Messag

ACE_Message_Queue介绍(生产者/消费者)

下面的两个线程共享一个消息队列,一个用来放整数到队列,一个从队列里取消息出来.此程序在控制台不停的输出递增数字,主要是内存不会泄露 用到了多线程.ACE_Message_Queue.ACE_Message_Block.ACE_Thread_Manager::instance()->spawn等 #include <iostream> using namespace std; #include "boost/lexical_cast.hpp" using namespa

ACE框架 基于共享内存的进程间通讯

ACE框架将基于共享内存的进程间通讯功能,如其它IO组件或IPC组件一样,设计成三个组件.流操作组件ACE_MEM_Stream,连接器组件ACE_MEM_Connector,以及接收连接组件ACE_MEM_Accpter.ACE框架为基于共享内存的进程间通讯提供了两种数据传输(分发deliver)策略.一种是使用生产者-消费者队列的一对多的多用户MT策略,另一种是使用socket流的可以使用反应器响应数据接收事件的Reactor策略.不论哪一种策略都要通过socket进行TCP连接,并进行进程

ACE服务端编程3:ACE跨平台之分配堆内存

ACE服务端编程系列的第三篇,探究ACE解决不同编译器之间分配堆内存的差异. 在ACE的官方示例中会看到大量的ACE_NEW_RETURN,ACE_NEW这样的宏,这是ACE为了消除不同编译器编译的代码在堆上分配内存失败的行为差异. 具体来说: 使用 malloc/calloc 等分配内存的函数时,一定要检查其返回值是否为“空指针”(亦即检查分配内存的操作是否成功),这是良好的C++编程习惯,也是编写可靠服务端程序所必需的. 如果使用 new 分配内存失败时,C++标准的规定是抛出异常,如果想检

图解VC++6.0和ACE 5.4 开发入门

一 工具和下载 工具和环境: Win7, VC++6, ACE5.4 可在Win7下运行的VC6下载: http://blog.csdn.net/bcbobo21cn/article/details/44200205 ACE安装包和本文demo代码下载: http://pan.baidu.com/s/1kUUOOlh 注意有两个ace安装包,5.4是dsw的工程,6.3是sln的工程 二 安装环境 下载ace54,解压: 在vc6.0中打开ace源码: 2个工程:网上资料有说3个工程: 在工程中

ACE6.2.0下载HTTP服务器文件

#include "ace/Log_Msg.h" // ACE_DEBUG的宏定义在这里.#include "ace/OS.h"#include "ace/CDR_Stream.h"#include "ace/INET_Addr.h"#include "ace/SOCK_Connector.h"#include "ace/SOCK_Stream.h"#include "ace/