zoukankan      html  css  js  c++  java
  • ACE_Reactor学习1 总体计划

        以前看了ace_reactor的相关文章, 也自己动手敲过reactor的小的demo, 难得一见的在mangos的更新中也看见了实际使用ace_reactor~~~但是总是感觉ace_reactor的实现对自己来说没有更清晰的认识, 由于性格问题, 必须看看究竟是怎样的才能满意, 所以打算在这里记录一下分析的过程, 以备以后使用或者复习~~~

        <虚拟机的设计与实现>作者就说了, 如果你在了解一个系统时能够有一个系统的总体结构图, 你会觉得这是非常幸运的一件事情. 所以, 在当前环境下(网上有很多关于reactor的分析, 讲解的情况)分析实现的时候, 很容易就能找到一个ace_reactor的总体结构图(图1), 图上的各个组件及其关系已经很清楚的表达了reactor的结构, 下面就是最最重要的一点, 在看代码的时候, 随时把reactor的结构表达出的含义记在心里, 不要陷入代码细节泥潭中去,切记, 呵呵, 其实这句话是对我自己说的. ok, 下面就开始实际的分析了, 第一件事就是定出分析的流程, 这点很重要, 不少时候分析实现坚持不下来就是没有提前定好一个流程, 导致看代码没有方向, 陷入细节中, 最后觉得烦而放弃了, 所以提前有一个计划是不错的, 就按计划按步就班的走就行了.

        流程和计划:

        1. 分析reactor.h 按功能整理API, "分而治之"的解决方法. (其实它不好看, 就是因为里面东西太多, 而且都合在一起, 形成了胖类~~~我不知道这好不好, 但是感觉很不好, 网上也有人讨论过这件事, 大家可以自己google一下)

        2. 将功能作为研究它的最小单位, 以研究功能是如何实现和组织在一起为目标. 这一步要时刻小心进入细节陷阱.

        3. 对照图1, 看看这个功能又是如何组合合作的, 功能之间的相互作用和影响, 从总体上理解reactor模式, 总结key word

        4. 获取其他reactor系统进行快速的分析

        上面就是主要的计划和流程, 呵呵, 这些是个人的意见, 因为看代码实现过程中经历了N多了放弃和重看, 上面的流程也是针对个人而言的:), 图2是ACE中Reactor的主要组成成员, 这个是实现相关的, 重要的就是Reactor作为用户界面, 向具体的实现转发 

                                    图2. ACE的Reactor的主要成员(实现)

        下面就简要的把reactor的用户界面api初步的分个类[Reactor.h]:

        ACE_Reactor 使用 pimp的方式, 我觉得应该是为了屏蔽底层的实现方式, 给用户提供一个统一的用户API界面, 里面只涉及到极少的逻辑, 其余都是API的转发调用. 但是这个类就展示了, 什么是一个Reactor[不一定好, 这个类, 太复杂感觉上]

        1. ACE对reactor提供了单件和普通实例两种方式

        2. ACE初始化, 配置函数

        3. 句柄管理功能

        4. 事件Loop功能

        5. Timer管理功能

        6. Single管理功能

        7. 通知机制

        8. 其他帮助函数

        这里可以注意到, Reactor不仅仅有IO事件, 还可以有Timer和Single事件~~~这个一下子就变的复杂了, 但是现在的注意力集中在2, 3, 4这三点上. 下面就对它们做逐个的分析.


          

       

  • 相关阅读:
    第36课 经典问题解析三
    第35课 函数对象分析
    67. Add Binary
    66. Plus One
    58. Length of Last Word
    53. Maximum Subarray
    38. Count and Say
    35. Search Insert Position
    28. Implement strStr()
    27. Remove Element
  • 原文地址:https://www.cnblogs.com/ringofthec/p/1686793.html
Copyright © 2011-2022 走看看