
ACE
zhoukuo1981
这个作者很懒,什么都没留下…
展开
-
ACE自适配通信环境简介
ACE自适配通信环境 (Adaptive Communication Environment)是面向对象的框架和工具包,它为通信软件实现了核心的并发和分布式模式。ACE包含的多种组件可以帮助通信软件的开发获得更好的灵活性、效率、可靠性和可移植性。ACE中的组件可用于以下几种目的: 并发和同步 进程间通信(IPC) 内存管理 定时器 信号 文件系统管理 线程管理转载 2009-02-26 18:23:00 · 960 阅读 · 0 评论 -
ACE接受器-连接器模式
接受器-连接器设计模式(Acceptor-Connector)使分布式系统中的连接建立及服务初始化与一旦服务初始化后所执行的处理去耦合。 这样的去耦合通过三种组件来完成:acceptor、connector 和 servicehandler(服务处理器)。 连接器主动地建立到远地接受器组件的连接,并初始化服务处理器来处理在连接上交换的数据。 接受器被动地等待来自远地连接器的连接请求转载 2009-02-26 18:48:00 · 936 阅读 · 0 评论 -
ACE前摄器Proactor模式
当 OS 平台支持异步操作时,一种高效而方便的实现高性能 Web 服务器的方法是使用前摄式事件分派。使用前摄式事件分派模型设计的 Web 服务器通过一或多个线程控制来处理异步操作的完成。这样,通过集成完成事件多路分离(completion event demultiplexing)和事件处理器分派,前摄器模式简化了异步的 Web 服务器。 异步的 Web 服务器将这样来利用前摄器模式:首转载 2009-02-26 18:50:00 · 972 阅读 · 0 评论 -
ACE的安装
ACE的安装是一件比较麻烦的事情,这里简单的记录了我在VS2005下安装ACE的过程,希望能给大家一个参考。 安装环境: 操作系统:Windows 7 beta 编译环境:VS2005-SP1 中文版 ACE版本:ACE-5.6安装过程: 下载安装包。 Ace的安装文件可以在http://download.dre.vanderbilt.e转载 2009-02-26 18:20:00 · 556 阅读 · 0 评论 -
ACE线程管理机制-线程的创建与管理
有过在不同的操作系统下用c++进行过多线程编程的朋友对那些线程处理的API可能深有体会,这些API提供了相同或是相似的功能,但是它们的API的差别却极为悬殊,十分令人头痛。 ACE_Thread提供了对不同OS的线程调用的简单包装,通过一个通用的接口进行处理线程创建、挂起、取消和删除等问题。 一. 线程入口函数 所有线程必须从一个指定的函数开始执行,该函数称为线程函数,它必须具有转载 2009-02-26 18:37:00 · 699 阅读 · 0 评论 -
ACE线程管理机制-并发控制
ACE有若干可用于并发控制的类。这些类可划分为以下范畴: ACE Lock类属 ACE Guard类属 ACE Condition类属 ACE Synchronization类 由于篇幅较长,我分别写作了几个小节,点击相应链接即可查看转载 2009-02-26 18:38:00 · 720 阅读 · 0 评论 -
ACE线程管理机制-并发控制(1)
ACE Lock类属 锁类属包含的类包装简单的锁定机制,比如互斥体、信号量、读/写互斥体和令牌等。这里我就以互斥体为例简单的介绍一下其使用方法,对其它的锁类进行一些简单的说明。 1.互斥体的使用。 互斥体用于保护共享的易变代码,也就是全局或静态数据。这样的数据必须通过互斥体进行保护,以防止它们在多个线程同时访问时损坏。 在ACE中可以通过ACE_Thread_Mutex实现线程的访转载 2009-02-26 18:39:00 · 898 阅读 · 0 评论 -
ACE通信机制
ACE通信机制相当多,这里简单的介绍一下Socket通信相关内容。 ACE中TCP通信 ACE中UDP通信 点击链接查看相关内容。转载 2009-02-26 18:42:00 · 726 阅读 · 0 评论 -
ACE中TCP通信
概述: 传输控制协议TCP(Transmission Control Protocol):TCP提供可靠的、面向连接的运输服务,用于高可靠性数据的传输。TCP协议的可靠性是指保证每个tcp报文能按照发送顺序到达客户端。 Tcp通信过程一般为如下步骤: 服务器绑定端口,等待客户端连接。 客户端通过服务器的ip和服务器绑定的端口连接服务器。 服务器和客户端通转载 2009-02-26 18:43:00 · 1012 阅读 · 0 评论 -
ACE反应器(Reactor)模式(4)
定时器的实现 通过Reactor机制,还可以很容易的实现定时器的功能,使用方式如下。 编写一个事件反应器,重载handle_timeout()方法,该方法是定时器的触发时间到时,会自动触发该方法。 通过Reactor的schedule_timer()方法注册定时器。 启动reacotr的handle_events()事件分发循环。 当不想使用定时转载 2009-02-26 18:47:00 · 817 阅读 · 0 评论 -
ACE反应器(Reactor)模式(3)
在服务器端使用Reactor框架 使用Reactor框架的服务器端结构如下: 服务器端注册两种事件处理器,ClientAcceptor和ClientService ,ClientService类负责和客户端的通信,每一个ClientService对象对应一个客户端的Socket连接。 ClientAcceptor专门负责被动接受客户端的连接,并创建ClientService对象。这样,在一转载 2009-02-26 18:47:00 · 795 阅读 · 0 评论 -
ACE反应器(Reactor)模式(2)
在Socket编程中,常见的事件就是"读就绪","写就绪",通过对这两个事件的捕获分发,可以实现Socket中的异步操作。 Socket编程中的事件处理器 在前面我们已经介绍过,在ACE反应器框架中,任何都必须派生自ACE_Event_Handler类,并通过重载其相应会调事件处理函数来实现相应的回调处理的。在Socket编程中,我们通常需要重载的函数有 handle_input(转载 2009-02-26 18:46:00 · 829 阅读 · 0 评论 -
ACE线程管理机制
ACE拥有许多不同的用于创建和管理多线程程序的类。在这里,我将简单的介绍一下ACE中的一些线程管理机制。 本节包含如下内容: 线程的创建与管理 线程间的并发控制 ACE Lock类属 ACE Guard类属 ACE Condition类属 ACE Synchronization类 面向对象的线程类ACE_Task转载 2009-02-26 18:25:00 · 604 阅读 · 0 评论 -
ACE线程管理机制-并发控制(2)
ACE Guard类属 与C一级的互斥体API相比较,Mutex包装为同步多线程控制提供了一种优雅的接口。但是,Mutex潜在地容易出错,因为程序员有可能忘记调用release方法(当然,C级的互斥体API更容易出错)。这可能由于程序员的疏忽或是C++异常的发生而发生,然而,其导致及其严重的后果--死锁。 因此,为改善应用的健壮性,ACE同步机制有效地利用C++类构造器和析构器的语义来确保转载 2009-02-26 18:40:00 · 692 阅读 · 0 评论 -
ACE线程管理机制-并发控制(3)
ACE Condition类属 ACE Condition类属(条件变量)提供风格与互斥体、读者/作者锁和计数信号量不同的锁定机制。当持有锁的线程在临界区执行代码时,这三种机制让协作线程进行等待。相反,条件变量通常被一个线程用于使自己等待,直到一个涉及共享数据的条件表达式到达特定的状态。当另外的协作线程指示共享数据的状态已发生变化,调度器就唤醒一个在该条件变量上挂起的线程。于是新唤醒的线程重新转载 2009-02-26 18:40:00 · 913 阅读 · 0 评论 -
ACE线程管理机制-并发控制(4)
ACE Synchronization类 这一类并发控制对象一般也叫做杂项并发类,这类对象一般用得不多,这里我只是对其作一些简单的介绍。 1.Atomic_Op类 ACE_Atomic_Op类用于将同步透明地参数化进基本的算术运算中。 ACE_Atomic_Op是一种模板类,锁定机制和需要参数化的类型被作为参数传入其中,重载所有算术操作符,并确保在操作前获取锁,在操作后释放它。运算转载 2009-02-26 18:41:00 · 717 阅读 · 0 评论 -
ACE线程管理机制-面向对象的线程类ACE_Task
我们在前一章中使用ACE_Thread包装时,你一定已经注意到了一些不够"优雅"的地方。那一章中的大多数程序都被分解为函数、而不是对象。这是因为ACE_Thread包装需要一个全局函数名、或是静态方法作为参数。随后该函数(静态方法)就被用作所派生的线程的"启动点"。这自然就使得程序员要为每个线程写一个函数。如我们已经看到的,这可能会导致非面向对象的程序分解。 ACE_Task对常用线程处理进行转载 2009-02-26 18:41:00 · 728 阅读 · 0 评论 -
ACE中UDP通信
udp是一种无连接的协议,提供无连接不可靠的服务。 在ace中,通过ACE_SOCK_Dgram类提供udp通信服务,ACE_SOCK_Dgram和ACE_SOCK_Stream的API非常类似,一样提供了send,recv及close等常用操作,这里就不再累述了。 udp通信时无需像tcp那样建立连接和关闭连接,tcp编程时需要通过accept和connect来建立连接,而udp通信省略转载 2009-02-26 18:44:00 · 702 阅读 · 0 评论 -
ACE主动对象模式(1)
主动对象模式用于降低方法执行和方法调用之间的耦合。该模式描述了另外一种更为透明的任务间通信方法。 传统上,所有的对象都是被动的代码段,对象中的代码是在对它发出方法调用的线程中执行的,当方法被调用时,调用线程将阻塞,直至调用结束。而主动对象却不一样。这些对象具有自己的命令执行线程,主动对象的方法将在自己的执行线程中执行,不会阻塞调用方法。 例如,设想对象"A"已在你的程序的main()函数中转载 2009-02-26 18:44:00 · 902 阅读 · 0 评论 -
ACE主动对象模式(2)
在上篇文章里,我们简单的介绍了一下ACE主动对象实现方式,同时提出了两个问题: 方法调用线程如何知道该方法已经执行完成? 如何或得方法的返回值? 要解决这两个问题,首先得介绍一下ACE_Future对象,ACE_Future是表示一个会在将来被赋值的"期货"对象,可以通过ready()函数查询它是否已经被赋值。该对象创建的时候是未赋值的,后期可以通过set()函数来进行赋值,转载 2009-02-26 18:45:00 · 711 阅读 · 0 评论 -
ACE反应器(Reactor)模式(1)
1.ACE反应器框架简介 反应器(Reactor):用于事件多路分离和分派的体系结构模式 通常的,对一个文件描述符指定的文件或设备, 有两种工作方式: 阻塞与非阻塞。所谓阻塞方式的意思是指, 当试图对该文件描述符进行读写时, 如果当时没有东西可读,或者暂时不可写, 程序就进入等待状态, 直到有东西可读或者可写为止。而对于非阻塞状态, 如果没有东西可读, 或者不可写, 读写函数马上返回, 而转载 2009-02-26 18:45:00 · 964 阅读 · 0 评论 -
ACE_Message_Block功能简介
ACE_Message_Block在Ace中用来表示消息的存放空间,可用做网络通信中的消息缓冲区,使用非常频繁,下面将在如下方简单的介绍一下ACE_Message_Block相关功能。 创建消息块 释放消息块 从消息块中读写数据 数据的拷贝 其它常用函数 1。创建消息块 创建消息块的方式比较灵活,常用的有以下几种方式 : 1。直接给消息块分配内存空间创建。转载 2009-02-26 18:50:00 · 643 阅读 · 0 评论