开源利器ACE
![star](https://csdnimg.cn/release/downloadcmsfe/public/img/star.98a08eaa.png)
![preview](https://dl-preview.csdnimg.cn/325404/0001-30d665284b07398d9a5c9f6079acd324_thumbnail-wide.jpeg)
![preview-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/scale.ab9e0183.png)
ACE(Adaptive Communication Environment) ACE 是一个开源的、跨平台的、基于 C++ 的通讯框架,提供了一个分层的框架,允许开发者在多个层次上使用 ACE 提供的接口来满足不同的需求。ACE 的结构可以分为四层:OS 抽象层、C++ 封装层、框架层和应用层。 OS 抽象层提供了对 OS 接口的 C 语言封装,包括文件管理、内存管理、进程/线程管理、IPC/RPC 机制、同步机制、时钟和信号处理等。ACE 对于 OS 接口的抽象是比较全面的,几乎相当于一个 C 语言的虚拟机。 C++ 封装层对 OS 抽象层做了 C++ 封装,同时也提供了一些 C++ 和 STL 没有提供而在实际开发中又经常用的容器,如 Hash map 等。 框架层提供了很多应用模式,作为工具使用也很方便,常用的有 ACE_Task_Base、ACE_Task、主动对象模式、Singleton、Reactor 模式、Proactor 模式、ACE_Acceptor/Connector 和 Streams 模式等。 ACE_Task_Base 提供了线程池的支持,其线程函数为 srv() 方法,使用时只需从 ACE_Task_Base 派生并覆盖该方法即可。ACE_Task 由 ACE_Task_Base 派生而来,区别在于 ACE_Task 里面聚合了消息队列,在其线程函数 srv() 中可以做一个循环,不停的调用 getq() 试图从消息队列中取得消息并做处理。 主动对象模式涉及到 ACE_Task, ACE_Method_Object, ACE_Future 以及 ACE_Future_Observer 类,该模式很灵活,既适用于同步调用函数的场合,也适用于异步调用函数的场合或有回调接口的场合。 Singleton 模式是对 Singleton 模式的泛型封装,有点特色的地方是采用了 Double-Check 技巧,使得该类支持并行环境。 Reactor 模式/Proactor 模式支持异步事件回调,包括文件 IO,Socket IO,信号和时钟。调用方可以将自己关心的事件及其处理函数在反应器中注册,当特定的事件发生时,由反应器在其线程环境中调用预先指定的函数。 ACE_Acceptor/Connector 封装客户端和服务器的连接过程,并使用了类厂模式,在连接建立后可以自动生成服务对象,使用户专注于服务的处理;同时也支持策略模式,用户可以使用不同的策略来控制连接建立过程,既简化了用户的代码,同时又有足够的灵活性。 Streams 模式对于高效协议栈的开发是很有用的,Stream 里面包含若干个模块,每个模块相当于分层协议里面的一层;同时每个模块里面包括了两个 ACE_Task,一个负责读方向的处理,一个负责写方向的处理,同一个方向上的数据交换通过上一层或下一层的消息队列来完成,交换的数据是 ACE_Message_Block,每一层都可以修改该消息中的数据,同时决定是否向上或向下传递,也可以直接向同层另一个方向的 Task 传递数据。 ACE 提供了一个灵活、可靠、高效的通讯框架,适用于各种通讯系统的开发,包括网络游戏服务器、视频服务器等。
![gz](https://img-home.csdnimg.cn/images/20210720083447.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/release/download_crawler_static/325404/bg1.jpg)
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
- fww_zju2013-03-06it is just a introduction, not worth study.
![avatar](https://profile-avatar.csdnimg.cn/default.jpg!1)
- 粉丝: 0
- 资源: 1
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)