每一秒钟打印一行

http://www.tuicool.com/articles/Zb263e

计时器的打开和关闭封装

http://andylin02.iteye.com/blog/440572

自己写的简单计时器:程序開始之后2秒钟之后运行第一次到时触发的动作,以后每隔一秒钟都会运行同样的动作;当运行总次数到达3次之后就终止计时,整个程序退出,并停止事件监听,释放资源

#include <iostream>
#include "ace/Log_Msg.h"
#include "ace/Event_Handler.h"
#include "ace/Reactor.h"
#include "ace/Thread_Manager.h" bool stop_event_loop = false;//是否须要终止计时器服务 class My_Timer_Handler : public ACE_Event_Handler
{
public:
My_Timer_Handler(const int delay,const int interval);
~My_Timer_Handler();
int handle_timeout(const ACE_Time_Value& , const void *act /* = 0 */);//计时器到期后运行的回调函数
private:
int n_;//循环计时的次数
long time_handle_;//在计时器队列中的ID
}; My_Timer_Handler::My_Timer_Handler(const int delay,const int interval):n_(0)
{
std::cout<<"My_Timer_Handler()"<<std::endl;
this->reactor(ACE_Reactor::instance());
this->time_handle_ = this->reactor()->schedule_timer(this,//在这里注冊定时器
0,
ACE_Time_Value(delay),//程序一開始延迟delay秒開始首次运行到期函数
ACE_Time_Value(interval));//循环计时,每隔interval秒反复运行
} My_Timer_Handler::~My_Timer_Handler()
{
std::cout<<"~My_Timer_Handler()"<<std::endl;
} int My_Timer_Handler::handle_timeout(const ACE_Time_Value& , const void *act /* = 0 */)
{
if (++this->n_>3)
{
ACE_Reactor::instance()->cancel_timer(this->time_handle_);
stop_event_loop = true;
std::cout<<"cancle_timer"<<std::endl;
}
else
{
std::cout<<"my timer handler handled timeout"<<std::endl;
} return 0;
} int main(int argc, char* argv[])
{ My_Timer_Handler my_handle(2,1); while (true)
{
if (stop_event_loop)
{
std::cout<<"stop handle time"<<std::endl;
break;
}
ACE_Reactor::instance()->handle_events();
} return 0;
}


执行结果例如以下:

My_Timer_Handler()

my timer handler handled timeout

my timer handler handled timeout

my timer handler handled timeout

cancle_timer

stop handle time

~My_Timer_Handler()

请按随意键继续. . .

ACE定时器的更多相关文章

  1. [转载]ACE的陷阱

    转自: http://blog.csdn.net/fullsail/article/details/2915685 坦白说,使用这个标题无非是希望能够吸引你的眼球,这篇文章的目的仅仅是为了揭示一些AC ...

  2. 基于ACE的定时器模板类

    ACETimerClockGenerator.h ClockGeneratorIF.h 在类中定义一个结构体,在结构体中定义一个函数. 在结构体中定义一个函数,这样做有什么好呢? TimerHandl ...

  3. 基于ACE的c++线程封装

    1. 基本需求 1) 一个基类,其某个方法代表一个线程的生命运行周期.之后通过继承自这个基类来实现个性化线程类: 2) 具备类似QObject的定时器设置功能: 3) 提供在线程对象中同步和异步执行方 ...

  4. 【阿里云产品公测】以开发者角度看ACE服务『ACE应用构建指南』

    作者:阿里云用户mr_wid ,z)NKt#   @I6A9do   如果感觉该评测对您有所帮助, 欢迎投票给本文: UO<claV   RsfTUb)<   投票标题:  28.[阿里云 ...

  5. 利用ACE 自己实现的线程池

    1: 线程池组件的配置文件: [log] ;DEBUG = 0 ;INFO = 1 ;WARN = 2 ;FAULT = 3 level=0 ;SCREENOUT = 0 ;FILEOUT = 1 ; ...

  6. 开源网络库ACE、Boost的ASIO、libevent、libev、ZeroMQ

    开源C/C++网络库:ACE          C++语言 跨平台Boost的ASIO  C++语言 跨平台libevent     C语言   主要支持linux,新版增加了对windows的IOC ...

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

    转载于:http://www.cnblogs.com/TianFang/archive/2006/12/18/596012.html 定时器的实现 通过Reactor机制,还可以很容易的实现定时器的功 ...

  8. ACE反应器(Reactor)模式(1)

    转载于:http://www.cnblogs.com/TianFang/archive/2006/12/13/591332.html 1.ACE反应器框架简介 反应器(Reactor):用于事件多路分 ...

  9. ACE自适配通信环境简介

    转载于:http://www.cnblogs.com/TianFang/archive/2006/12/03/580795.html ACE自适配通信环境 (Adaptive Communicatio ...

随机推荐

  1. mooon编译系统介绍(可复用Makefile)

    mooon编译系统介绍(可复用Makefile).pdf(ChinaUnix下载) CSDN下载:http://download.csdn.net/detail/aquester/5626929 mo ...

  2. 与众不同 windows phone (27) - Feature(特性)之搜索的可扩展性, 程序的生命周期和页面的生命周期, 页面导航, 系统状态栏

    原文:与众不同 windows phone (27) - Feature(特性)之搜索的可扩展性, 程序的生命周期和页面的生命周期, 页面导航, 系统状态栏 [索引页][源码下载] 与众不同 wind ...

  3. Xaml在string(串)定义常量和处理空间

    (1)基本使用方法 xaml中能够实例化各种对象,比方在ResourceDictionary中定义字符串常量: <ResourceDictionary xmlns="http://sc ...

  4. OCA读书笔记(9) - 管理数据同步

    9.Managing Data Concurrency 描述锁机制以及oracle如何管理数据一致性监控和解决锁冲突 管理数据的并发--管理锁数据的不一致:脏读更改丢失幻影读 脏读:数据是指事务T2修 ...

  5. Free Mind » Blog Archive » Yakuake + dtach vs Screen + urxvt

    Free Mind » Blog Archive » Yakuake + dtach vs Screen + urxvt Yakuake + dtach vs Screen + urxvt

  6. Zero Clipboard - 跨浏览器兼容的“复制到剪贴板”功能

    开发中经常会用到复制的功能,在 IE 下实现比较简单,但要想做到跨浏览器比较困难了. 本文将介绍一个跨浏览器的库类 Zero Clipboard ,它利用 Flash 进行复制,所以只要浏览器装有 F ...

  7. queue C++

    #include <iostream> using namespace std; class DequeEmptyException { public: DequeEmptyExcepti ...

  8. WOJ 1055

    #include<stdio.h> #include<stdlib.h> #include<string.h> int main() { char s[6]={0} ...

  9. Cocos2d-x 3.1.1 Lua实例-AccelerometerTest(重力加速计)

    Cocos2d-x 3.1.1 Lua实例-AccelerometerTest(重力加速计) 本篇博客介绍Cocos2d-x的第一个实例--重力加速计測试.效果图(注:这里无法模拟重力感应): --[ ...

  10. Android经常使用开源组件汇总

    http://www.cnblogs.com/scige/p/3456790.html UI相关 图片 Android-Universal-Image-Loader:com.nostra13.univ ...