`

ACE反应器(Reactor)模式(4)

    博客分类:
  • ACE
OS 
阅读更多

定时器的实现

通过Reactor机制,还可以很容易的实现定时器的功能,使用方式如下。

  1. 编写一个事件反应器,重载handle_timeout()方法,该方法是定时器的触发时间到时,会自动触发该方法。
  2. 通过Reactor的schedule_timer()方法注册定时器。
  3. 启动reacotr的handle_events()事件分发循环。
  4. 当不想使用定时器时,可以通过Reactor的cancel_timer()方法注销定时器。

下面的代码简单的实现了一个定时器,并具有基本的开启,关闭功能。

#include <ace/OS.h>
#include <ace/Reactor.h>

class MyTimerHandler : public ACE_Event_Handler
{
private:
    int inteval;    //执行时间间隔
    int delay;        //延迟执行时间
    int timerid;

public:
    MyTimerHandler(int delay,int inteval)
    {
        this->delay=delay;
        this->inteval=inteval;
    }

    int open()    //注册定时器
    {
        ACE_Time_Value delaytime(inteval);
        ACE_Time_Value intevaltime(inteval);
        timerid = reactor()->schedule_timer(this,
            0,    //传递handle_timeout给的参数
            delaytime,
            intevaltime);
        return timerid;
    }

    int close()    //取消定时器
    {
        return reactor()->cancel_timer(timerid);
    }

    //定时器回调函数
    int handle_timeout (const ACE_Time_Value &current_time,
        const void * = 0)
    {
        time_t epoch = ((timespec_t)current_time).tv_sec;
        ACE_DEBUG ((LM_INFO,
            ACE_TEXT ("handle_timeout: %s\n"),
            ACE_OS::ctime (&epoch)));
        return 0;
    }
};

int main(int argc, char *argv[]) 
{
    MyTimerHandler * timer = new MyTimerHandler (3,5);
    timer->reactor(ACE_Reactor::instance());
    timer->open();

    for(int i=0;i<2;i++)    //触发次handle_timeout事件
    {
        ACE_OS::printf("\n%d\n",i);
        ACE_Reactor::instance()->handle_events();
    }

    timer->close();
    ACE_OS::printf("cancel timer");
    while(true)
        ACE_Reactor::instance()->handle_events();
    return 0; 
}
 

代码功能比较简单,这里就不多做介绍了。

分享到:
评论
1 楼 yuanyu5237 2011-08-04  
您好,我下载的6.0.0版本,安装后没有OS.h这个文件,是我没有正确编译还是其他什么问题?

相关推荐

    ACE反应器(Reactor)模式的深入分析

    ACE反应器(Reactor)模式是一种用于处理并发事件的架构设计模式,主要应用于网络服务器的开发,特别是处理大量并发连接的场景。它有效地解决了在单线程或多线程环境中,如何高效地处理多个I/O事件的问题。Reactor模式...

    Reactor反应器的实现方法详解

    创建自定义反应器实例后,可以使用`ACE_Reactor::instance()`方法替换默认的反应器实例,并指定是否在程序结束时删除这个实例。 3. **具体的Reactor实现** - **ACE_Select_Reactor**:这是在除Windows外的大多数...

    C++ Network Programming, Volume 2: Systematic Reuse with ACE and Frameworks

    - 第4章提供了ACE反应器不同实现的详细介绍,包括ACE_Select_Reactor、ACE_TP_Reactor和ACE_WFMO_Reactor类,每种实现都有其特定的使用场景和优势。 5. ACE服务配置器框架 - 第5章介绍了ACE服务配置器框架,展示...

    ace_reactor:王牌React堆服务器

    Ace Reactor提供了多种反应器实现,包括基于select、poll、epoll等不同操作系统原生API的版本,以适应不同的性能和规模需求。例如,Linux系统的epoll机制在高并发下表现出色,因为它支持水平触发和边缘触发两种模式...

    ACE开发指南(初级)

    ACE的核心特性包括反应器(Reactor)和预行动器(Proactor)模式,它们是事件驱动设计的关键部分。 2.2 **环境搭建** 在开始开发前,需要安装ACE库,并配置开发环境。这通常包括下载源码,编译安装,然后在项目中链接...

    ACE学习文档大全.rar

    5. **ACE反应器(Reactor)模式**: Reactor模式是ACE的核心,它负责监听和分发网络事件。开发者需要理解Reactor的事件处理机制,如事件注册、调度策略、回调函数等。同时,Reactor的异步I/O模型也是学习的重点,它...

    ACE框架知识

    反应器操作 - **close()**: 关闭并释放由`ACE_Reactor`使用的资源。 - **register_handler(ACE_Event_Handler*, ACE_Reactor_Mask)**: 注册事件处理器到`ACE_Reactor`,并指定感兴趣的事件类型。 - **remove_...

    ACE 程序员指南 源代码

    7. **分布式系统设计**:ACE_TSS(Thread Specific Storage)用于线程局部存储,ACE_Logger提供日志记录,ACE_WFMO_Reactor实现了Windows下的基于WaitFOrMultipleObjects的反应器。 8. **性能优化**:ACE_Dynamic_...

    ACE程序员指南

    4. **ACE_WFMO_Reactor**:这是ACE的一个高级反应器实现,基于Windows的完成端口(I/O完成端口)技术,提供了高效的并发处理能力。 5. **ACE_Acceptor和ACE_Connector**:这两个类分别用于服务器端接受连接请求和...

    ACE简单例子 并附说明

    - **反应器模型**:ACE的反应器(`ACE::Reactor`)是处理I/O事件的核心组件。 - **设计模式的应用**:ACE广泛采用了设计模式,如单例模式、适配器模式、迭代器模式等。 ##### 2. 内存管理 - **缓存内存分配类ACE_...

    ACE.rar_ACE

    1. **ACE框架结构**:ACE主要由几个核心组件构成,如Reactor(事件反应器)、Thread Manager(线程管理器)、Tokenizer(分词器)等,它们共同构成了一个强大的网络通信框架。 2. **Reactor模式**:这是ACE的核心...

    开源利器ACE

    调用方可以将自己关心的事件及其处理函数在反应器中注册,当特定的事件发生时,由反应器在其线程环境中调用预先指定的函数。 ACE_Acceptor/Connector 封装客户端和服务器的连接过程,并使用了类厂模式,在连接建立...

    ACE开发指南(初级).

    ##### 3.1 Reactor(反应器)框架 Reactor模式是一种常见的事件驱动设计模式,它将事件处理与事件接收解耦,使得系统更加灵活和可扩展。 ###### 3.1.1 ACE_Event_Handler(事件处理器) 在ACE框架中,`ACE_Event_...

    ACE技术论文集(已翻译为中文)

    第 7 章 ACE 反应器(Reactor)的设计和使用:用于事件多路分离的面向对象框架 第 8 章 前摄器(Proactor):用于为异步事件多路分离和分派处理器的对象行为模式 第 9 章 接受器-连接器(Acceptor-Connector):...

    一个简单的ace C/S 供学习参考

    2. `ACE_Reactor`: 反应器模式是ACE中的核心设计模式,用于处理并发事件。`ACE_Reactor`负责调度事件处理,当有新的连接或数据到达时,它会调用相应`ACE_Handler`的回调函数。 3. `ACE_Acceptor`: ACE提供`ACE_...

    ACE经典教程 经典

    ACE是基于事件驱动和反应器模式的库,它提供了一系列接口和工具,用于简化网络编程、并发处理和系统资源管理。ACE支持多种操作系统,包括Windows、Linux、Unix等,确保代码的可移植性。 2. ACE核心概念: - 事件...

    ACE自适配通信环境中文技术文档.pdf

    Process Communication,进程间通信)、I/O、Active Object(活动对象设计模式)、Reactor(反应器模式)、Proactor(前摄器模式)、Acceptor(接受器模式)以及众多操作系统平台,例如UNIX、Win32、Linux、Mac OS、...

Global site tag (gtag.js) - Google Analytics