`
sogo6
  • 浏览: 113292 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

ACE消息队列的示例代码

阅读更多
#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技术内幕示例代码"是针对ACE(Adaptive Communication Environment)框架的一本书中的实践代码集,主要适用于Linux操作系统。ACE是一个开源的、跨平台的C++库,它提供了多种网络通信和并发处理的工具,广泛应用...

    ace技术内幕实例代码

    通过"ace技术内幕示例代码",我们可以学习如何: 1. **创建服务器和客户端**:理解如何使用ACE_Acceptor和ACE_Connector来启动服务器并建立客户端连接。 2. **事件驱动编程**:了解如何注册Event_Handler,并使用...

    基于ACE的网络聊天程序

    【基于ACE的网络聊天程序】是一个使用ACE库开发的示例项目,主要目的是为了帮助学习者理解并掌握ACE在网络编程中的应用。ACE(Adaptive Communication Environment)是一个跨平台的、可扩展的C++库,提供了丰富的...

    ACE.rar ACE5.5 源代码 学习资料

    学习资料部分可能包括了关于ACE5.5的教程、文档、示例代码和用户手册。这些资料通常会详细解释各个组件的使用方法、设计原理以及最佳实践,帮助初学者快速上手。例如,教程可能会从基本的网络编程概念开始,逐步引导...

    ACE框架主动对象的实现及代码示例

    下面通过分析ACE框架提供的示例代码,深入了解主动对象的实现细节。 #### 四、示例代码分析 ##### 1. HA_ControllerAgent 类 首先定义了一个简单的被动对象 `HA_ControllerAgent`,该类包含了一个 `status_update...

    ACE.rar_ACE_ACE网络库_ACE网络编程_ace 网络库_网络 免费

    4. **时间敏感和可靠性的支持**:ACE 提供了用于实时系统和高可靠性应用的工具,如定时器队列、消息队列和错误恢复机制。 5. **分布式对象框架**:ACE 包含了 CORBA(Common Object Request Broker Architecture)...

    ACE库入门(中文)

    10. **文档和社区支持**:ACE有一个活跃的开发者社区,提供了丰富的文档、示例代码和在线资源,帮助用户理解和应用这个库。 学习ACE库通常需要从安装和配置开始,然后逐步探索各个组件的用法,编写简单的网络应用...

    Ace_Net.rar_ACE_ace 网络 _ace c++

    描述中提到“单独拿出来用,有需要的可以试试看”,这意味着这个压缩包可能包含了一些独立的ACE网络库或者示例代码,供开发者直接引用或者学习使用。 在压缩包的文件名列表中,我们看到两个文件: - **...

    ACE完整牛逼定时器

    在提供的压缩包`ace_timer_7_4_1`中,可能包含了不同版本的ACE库源码,以及相关的示例程序和文档。通过阅读这些资源,开发者可以更深入地了解如何利用ACE定时器来构建高效、可靠的实时系统。 总的来说,ACE定时器是...

    ACE简单例子 并附说明

    - **消息队列:ACE_Message_Queue_Ex**:消息队列模型是用于消息传递的重要组件,支持先进先出(FIFO)原则的消息传递机制。 ##### 5. 线程管理与任务 - **线程管理类:ACE_Thread_Manager**:ACE_Thread_Manager类...

    ACE网络框架中文文档

    压缩包中的"ACE.chm"文件是ACE的中文帮助文档,包含了详细的技术指南、API参考和示例代码,对于学习和使用ACE框架来说是非常宝贵的资源。通过阅读这个文档,你可以了解到如何配置ACE环境、如何使用其提供的各种组件...

    ace_send.rar_ACE_pop

    文件"ace_send.cpp"很可能包含了具体的C++代码示例。在这些代码中,我们可以预期看到以下关键部分: 1. **ACE_Queue**: ACE库提供了`ACE_Queue`类,它实现了先进先出(FIFO)的数据结构。开发者会用这个类创建队列...

    ACE-6.5.8.zip

    6. **Examples**: 这个目录下包含了大量的示例代码,展示了如何使用ACE库的各种功能,是学习和理解ACE工作原理的好地方。 7. **Tests**: 测试用例目录,用于验证ACE库的功能是否正常,同时也是验证新功能或修改是否...

    ACE.rar_ACE

    而"www.pudn.com.txt"可能包含更多关于在哪里获取最新版本的ACE库、相关的开发资源、社区支持和示例代码的信息。 总的来说,ACE是一个强大的工具,对于那些需要处理复杂并发问题和构建分布式系统的C++开发者来说,...

    ACE介绍(中文文档)

    9. **文档和社区**:ACE有一个活跃的社区,提供了丰富的文档、示例代码和在线支持,有助于开发者快速理解和使用ACE。 通过阅读这份译文,读者不仅可以了解ACE的基本概念,还能掌握如何在实际项目中利用ACE的特性和...

    ACE使用说明.rar

    5. 示例代码和练习,帮助读者巩固理解和实践ACE编程。 **下篇:ACE应用实例** 这部分可能会提供一些真实世界的案例,展示ACE在实际项目中的应用。可能包含: 1. ACE在实时系统、嵌入式系统或大型分布式系统中的成功...

    介绍ACE开发的少数几本书

    ACE(Adaptive Communication Environment)是一个跨平台的C++框架,专为构建高...记住,理论学习与实践操作相结合是掌握任何技术的关键,因此在阅读书籍的同时,尝试编写和运行示例代码,将极大地提升你的学习效果。

    ACE经典教程

    除了理论知识,教程还会包含大量示例代码,让读者能够在实践中掌握ACE的用法。通过这些示例,读者可以了解到如何使用ACE构建实际的网络服务,如HTTP服务器、TCP聊天应用等。 总的来说,《ACE经典教程》不仅适合初学...

    ACE开发文档 开发的理想文档

    ACE.chm文件很可能是一个包含ACE库详细文档的离线帮助文件,通常包含API参考、教程、示例代码等内容,是学习和使用ACE的重要资料。 总的来说,ACE库为C++开发者提供了一个强大、全面的网络编程工具箱,通过掌握其...

    ACE学习资料合集

    《ACE开发指南(初级)》可能包含入门级教程,介绍如何开始使用ACE进行开发,包括安装、配置和基本的编程示例。 《C++面向对象中间件体系结构(ACE).docx》可能讨论了面向对象技术在中间件设计中的应用,特别是ACE如何...

Global site tag (gtag.js) - Google Analytics