#include "ace/ACE.h"
#include "ace/OS.h"
#include "ace/Synch.h"
#include "ace/Message_Queue_T.h"
#include "ace/Thread_Mutex.h"
#include "ace/Thread_Manager.h"
#include <iostream>
struct MYMSG
{
int version;
int sn;
char *context;
};
class CTest
{
public:
CTest();
~CTest();
int init();
private:
ACE_Message_Queue<ACE_MT_SYNCH> m_queue;
static void handleSend(void *p);
};
int main(int argc, char* argv[])
{
CTest myTest;
myTest.init();
ACE_Thread_Manager::instance()->wait();
return 0;
}
CTest::CTest()
{
}
CTest::~CTest()
{
}
int CTest::init()
{
// 创建出来一个线程
ACE_Thread_Manager::instance()->spawn((ACE_THR_FUNC)CTest::handleSend, (void*)this,
THR_NEW_LWP|THR_JOINABLE);
Sleep(2000);
int i = 0;
for (; i < 20000; i++)
{
MYMSG *myMsg = new MYMSG;
myMsg->version = 1;
myMsg->sn = i;
ACE_Message_Block *msgBlock = new ACE_Message_Block((const char *)myMsg, sizeof(MYMSG));
m_queue.enqueue(msgBlock);
}
return 0;
}
void CTest::handleSend(void *p)
{
if (NULL == p)
{
return;
}
CTest *my = (CTest *)p;
ACE_Message_Queue<ACE_MT_SYNCH> *msgQueue = &my->m_queue;
if (NULL == msgQueue)
{
return;
}
ACE_Time_Value timeout;
while (true)
{
ACE_Message_Block * mb = NULL;
msgQueue->dequeue(mb);
if (NULL != mb)
{
MYMSG *myMsg = (MYMSG *)mb->base();
delete mb;
mb = NULL;
std::cout << "sn = " << myMsg->sn << std::endl;
delete myMsg;
myMsg = NULL;
}
}
}
分享到:
相关推荐
"ACE技术内幕示例代码"是针对ACE(Adaptive Communication Environment)框架的一本书中的实践代码集,主要适用于Linux操作系统。ACE是一个开源的、跨平台的C++库,它提供了多种网络通信和并发处理的工具,广泛应用...
通过"ace技术内幕示例代码",我们可以学习如何: 1. **创建服务器和客户端**:理解如何使用ACE_Acceptor和ACE_Connector来启动服务器并建立客户端连接。 2. **事件驱动编程**:了解如何注册Event_Handler,并使用...
【基于ACE的网络聊天程序】是一个使用ACE库开发的示例项目,主要目的是为了帮助学习者理解并掌握ACE在网络编程中的应用。ACE(Adaptive Communication Environment)是一个跨平台的、可扩展的C++库,提供了丰富的...
学习资料部分可能包括了关于ACE5.5的教程、文档、示例代码和用户手册。这些资料通常会详细解释各个组件的使用方法、设计原理以及最佳实践,帮助初学者快速上手。例如,教程可能会从基本的网络编程概念开始,逐步引导...
下面通过分析ACE框架提供的示例代码,深入了解主动对象的实现细节。 #### 四、示例代码分析 ##### 1. HA_ControllerAgent 类 首先定义了一个简单的被动对象 `HA_ControllerAgent`,该类包含了一个 `status_update...
4. **时间敏感和可靠性的支持**:ACE 提供了用于实时系统和高可靠性应用的工具,如定时器队列、消息队列和错误恢复机制。 5. **分布式对象框架**:ACE 包含了 CORBA(Common Object Request Broker Architecture)...
10. **文档和社区支持**:ACE有一个活跃的开发者社区,提供了丰富的文档、示例代码和在线资源,帮助用户理解和应用这个库。 学习ACE库通常需要从安装和配置开始,然后逐步探索各个组件的用法,编写简单的网络应用...
描述中提到“单独拿出来用,有需要的可以试试看”,这意味着这个压缩包可能包含了一些独立的ACE网络库或者示例代码,供开发者直接引用或者学习使用。 在压缩包的文件名列表中,我们看到两个文件: - **...
在提供的压缩包`ace_timer_7_4_1`中,可能包含了不同版本的ACE库源码,以及相关的示例程序和文档。通过阅读这些资源,开发者可以更深入地了解如何利用ACE定时器来构建高效、可靠的实时系统。 总的来说,ACE定时器是...
- **消息队列:ACE_Message_Queue_Ex**:消息队列模型是用于消息传递的重要组件,支持先进先出(FIFO)原则的消息传递机制。 ##### 5. 线程管理与任务 - **线程管理类:ACE_Thread_Manager**:ACE_Thread_Manager类...
压缩包中的"ACE.chm"文件是ACE的中文帮助文档,包含了详细的技术指南、API参考和示例代码,对于学习和使用ACE框架来说是非常宝贵的资源。通过阅读这个文档,你可以了解到如何配置ACE环境、如何使用其提供的各种组件...
文件"ace_send.cpp"很可能包含了具体的C++代码示例。在这些代码中,我们可以预期看到以下关键部分: 1. **ACE_Queue**: ACE库提供了`ACE_Queue`类,它实现了先进先出(FIFO)的数据结构。开发者会用这个类创建队列...
6. **Examples**: 这个目录下包含了大量的示例代码,展示了如何使用ACE库的各种功能,是学习和理解ACE工作原理的好地方。 7. **Tests**: 测试用例目录,用于验证ACE库的功能是否正常,同时也是验证新功能或修改是否...
而"www.pudn.com.txt"可能包含更多关于在哪里获取最新版本的ACE库、相关的开发资源、社区支持和示例代码的信息。 总的来说,ACE是一个强大的工具,对于那些需要处理复杂并发问题和构建分布式系统的C++开发者来说,...
9. **文档和社区**:ACE有一个活跃的社区,提供了丰富的文档、示例代码和在线支持,有助于开发者快速理解和使用ACE。 通过阅读这份译文,读者不仅可以了解ACE的基本概念,还能掌握如何在实际项目中利用ACE的特性和...
5. 示例代码和练习,帮助读者巩固理解和实践ACE编程。 **下篇:ACE应用实例** 这部分可能会提供一些真实世界的案例,展示ACE在实际项目中的应用。可能包含: 1. ACE在实时系统、嵌入式系统或大型分布式系统中的成功...
ACE(Adaptive Communication Environment)是一个跨平台的C++框架,专为构建高...记住,理论学习与实践操作相结合是掌握任何技术的关键,因此在阅读书籍的同时,尝试编写和运行示例代码,将极大地提升你的学习效果。
除了理论知识,教程还会包含大量示例代码,让读者能够在实践中掌握ACE的用法。通过这些示例,读者可以了解到如何使用ACE构建实际的网络服务,如HTTP服务器、TCP聊天应用等。 总的来说,《ACE经典教程》不仅适合初学...
ACE.chm文件很可能是一个包含ACE库详细文档的离线帮助文件,通常包含API参考、教程、示例代码等内容,是学习和使用ACE的重要资料。 总的来说,ACE库为C++开发者提供了一个强大、全面的网络编程工具箱,通过掌握其...
《ACE开发指南(初级)》可能包含入门级教程,介绍如何开始使用ACE进行开发,包括安装、配置和基本的编程示例。 《C++面向对象中间件体系结构(ACE).docx》可能讨论了面向对象技术在中间件设计中的应用,特别是ACE如何...