您好,欢迎访问三七文档
ACE介绍一.摘要...........................................................................................................................2二.适用者.......................................................................................................................2三.开始...........................................................................................................................23.1main...................................................................................................................23.2环境初始化.......................................................................................................23.3日志...................................................................................................................3四.内存使用...................................................................................................................42.1缓存内存分配类ACE_Cached_Allocator........................................................42.2内存分配器ACE_Malloc..................................................................................52.3内存映射:ACE_Mem_Map.........................................错误!未定义书签。2.4内存池:ACE_XXX_Memory_Pool.............................错误!未定义书签。2.5共享内存:ACE_Shared_Memory_MM.......................错误!未定义书签。五.锁...............................................................................................................................63.1原子锁:ACE_Atomic_Op..............................................................................73.2其他锁:ACE_XXX_Mutex............................................................................9六.队列...........................................................................................................................93.3线性队列:ACE_Unbounded_Set...................................................................93.4内存块模型:ACE_Data_Block....................................................................103.5消息存储模型:ACE_Message_Block.........................................................113.6消息队列:ACE_Message_Queue_Ex..........................................................11七.线程...........................................................................................................................65.1线程管理类:ACE_Thread_Manager.............................................................6八.任务:ACE_Task...................................................................................................133.1机制.................................................................................错误!未定义书签。3.2....................................................................................................................................16九.网络通讯.................................................................................错误!未定义书签。十.反应器:ACE::Reactor..........................................................................................23十一.ACE常用设计模式.................................................................................................279.1单件模式之应用:Singleton..........................................................................279.2适配器模式之应用:Adapter........................................................................279.3迭代器模式之应用:Iterator.........................................................................279.4置换模式之应用:Substitution......................................错误!未定义书签。9.5工厂模式.........................................................................错误!未定义书签。十二.主动对象介绍.........................................................................错误!未定义书签。十三.参考文献.................................................................................错误!未定义书签。1一.摘要ACE(自适配通信环境:AdaptiveCommunicationEnvironment),封装了OS层的底层API,并结合设计模式为各种操作平台提供了一整套高性能的底层开发包。开发包的内容涉及到:进程间通信、内存管理、线程管理、同步、网络通信、事件分发、服务器配置等。二.适合阅读者本文档适用ACE初学者,主要介绍如何利用ACE封装的优势来开发我们自己应用系统。三.开始3.1mainACE对main做了重定义,目的是为了适应不同平台的编译入口点,这个一般不会影响到我们的开放过程,我们可以象平时那样按照main的格式写我们的入口函数:intmain(intargv,char*argc[]);,main函数的两个参数一定要写,如果这样写:intmain()会出现编译错误:unresolvedexternalsymbolint__cdeclace_main_i(int,char**const)。我们当然也可以不按照ACE规定的main格式,只要在main函数前面增加下面的语句就可以了:#ifdefmain#undefmain#endif3.2环境初始化如果使用ACE类库提供的服务时例如:反应器(Reactor),需要在应用系统的开始和结束处各添加ACE::init()和ACE::fini(),分别用来初始化ACE环境和释放资源,另外对于单实例模式的使用也需要使用ACE::init和ACE::fini。这两个静态函数其实是调用ACE_Object_Manager类的init和fini方法。对于ACE提供的单实例模式类,为了统一封装并不要求用户自己释放,而是由ACE在通过ACE::fini统一在系统的结束处释放其资源。单实例的使用:23.3日志ACE提供日志及跟踪信息的调试、打印管理,类ACE_Log_Msg提供日志的显示和打印,用户也可以通过继承ACE_Log_Msg_Callback类实现日志的自己管理。在我们代码里面可以使用两个宏:ACE_DEBUG和ACE_ERROR记录日志,下面例子简单显示两个日志:intmain(intargc,char*argv[]){ACE_DEBUG((LM_DEBUG,“ACE_DEBUG测试\n”));//注意宏前后一定要使用两个括号}和日志相关的三个头文件:log_msg.h、log_record.h、log_msg_callback.h使用ACE_Log_Msg实现日志管理,默认情况下ACE_Log_Msg根据flags输出日志,默认的flags是ACE_Log_Msg::stderr,例如上面的例子日志被输出到console,我们可以通过修改flags改变日志输出的位置。1、作为系统日志输出,下面的代码可以输出成系统日志,通过WINDOWS事件查看器可以看到结果。#includeace/log_msg.h#includeace/log_msg_callback.h#includeace/log_record.hintmain(intargc,ACE_TCHAR*argv[]){//ACE_LOG_MSG宏其实是ACE_Log_Msg::instance()ACE_LOG_MSG-open(logtest,ACE_Log_Msg::SYSLOG);ACE_DEBUG((LM_INFO,日志测试11\n));}2、输出到文件#includeace/Os.h#inc
本文标题:ACE初级介绍
链接地址:https://www.777doc.com/doc-6221143 .html