ACE介绍.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ACE介绍

ACE介绍 一. 摘要 2 二. 适用者 2 三. 开始 2 3.1 main 2 3.2 环境初始化 2 3.3 日志 3 四. 内存使用 4 2.1 缓存内存分配类ACE_Cached_Allocator 5 2.2 内存分配器ACE_Malloc 5 2.3 内存映射:ACE_Mem_Map 6 2.4 内存池:ACE_XXX_Memory_Pool 6 2.5 共享内存:ACE_Shared_Memory_MM 8 五. 锁 9 3.1 原子锁:ACE_Atomic_Op 9 3.2 其他锁:ACE_XXX_Mutex 9 六. 队列 9 3.3 线性队列:ACE_Unbounded_Set 9 3.4 内存块模型:ACE_Data_Block 10 3.5 消息存储模型:ACE_Message_Block 11 3.6 消息队列:ACE_Message_Queue_Ex 12 七. 线程 12 5.1 线程管理类:ACE_Thread_Manager 12 八. 任务:ACE_Task 12 3.1 机制 12 3.2 15 九. 网络通讯 15 十. 反应器:ACE::Reactor 15 十一. ACE常用设计模式 16 9.1 单件模式之应用:Singleton 16 9.2 适配器模式之应用:Adapter 17 9.3 迭代器模式之应用:Iterator 17 9.4 置换模式之应用:Substitution 18 9.5 工厂模式 18 十二. 主动对象介绍 18 十三. 参考文献 18 摘要 ACE(自适配通信环境:Adaptive Communication Environment),封装了OS层的底层API,并结合设计模式为各种操作平台提供了一整套高性能的底层开发包。开发包的内容涉及到:进程间通信、内存管理、线程管理、同步、网络通信、事件分发、服务器配置等。 适合阅读者 本文档适用ACE初学者,主要介绍如何利用ACE封装的优势来开发我们自己应用系统。 开始 main ACE对main做了重定义,目的是为了适应不同平台的编译入口点,这个一般不会影响到我们的开放过程,我们可以象平时那样按照main的格式写我们的入口函数:int main(int argv, char *argc[]);,main函数的两个参数一定要写,如果这样写:int main()会出现编译错误:unresolved external symbol int __cdecl ace_main_i(int,char * * const)。 我们当然也可以不按照ACE规定的main格式,只要在main函数前面增加下面的语句就可以了: #ifdef main #undef main #endif 环境初始化 如果使用ACE类库提供的服务时例如:反应器(Reactor),需要在应用系统的开始和结束处各添加ACE::init()和ACE::fini(),分别用来初始化ACE环境和释放资源,另外对于单实例模式的使用也需要使用ACE::init和ACE::fini。这两个静态函数其实是调用ACE_Object_Manager类的init和fini方法。 对于ACE提供的单实例模式类,为了统一封装并不要求用户自己释放,而是由ACE在通过ACE::fini统一在系统的结束处释放其资源。 单实例的使用: 日志 ACE提供日志及跟踪信息的调试、打印管理,类ACE_Log_Msg提供日志的显示和打印,用户也可以通过继承ACE_Log_Msg_Callback类实现日志的自己管理。在我们代码里面可以使用两个宏:ACE_DEBUG和ACE_ERROR记录日志,下面例子简单显示两个日志: int main(int argc, 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改变日志输出的位置。 作为系统日志输出,下面的代码可以输出成系统日志,通过WINDOWS事件查看器可以看到结果。 #include ace/log_msg.h #include ace/log_msg_callback.h #include ace/log_record.h int main (int argc, ACE_TCHAR * argv[

文档评论(0)

me54545 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档