ACE_Timer_Queue

2024-06-15 02:08
文章标签 queue timer ace

本文主要是介绍ACE_Timer_Queue,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

下面为一个主动定时器,ACE程序员指南上的例子,存储定时器的结构为heap,用法很简单,
回调机制使用的为ACE_Event_Handler,关键接口就是timer_queue的schedule,第一个为回调对象的引用(继承了ACE_Event_Handler类,
会回到其中的handle_timeout方法),其中schedule方法的第二和第三个参数也会传给第一个回调对象的handle_timeout方法。
所有的到时调度都是在timer_queue的私有线程调度的。[cpp] view plaincopy
#include "ace/Timer_Queue_Adapters.h"  
#include "ace/Timer_Heap.h"  typedef ACE_Thread_Timer_Queue_Adapter<ACE_Timer_Heap> ActiveTimer;  class CB : public ACE_Event_Handler  
{  
public:  CB(int id):m_id(id) {}  virtual int handle_timeout(const ACE_Time_Value &tv, const void *arg)  {  ACE_DEBUG((LM_DEBUG, ACE_TEXT("CB::handler_timeout\n")));  const int *val = ACE_static_cast(const int*, arg);  ACE_ASSERT((*val) == m_id);  ACE_DEBUG((LM_DEBUG, ACE_TEXT("Expiry handled by thread %t, the cb_id is %d\n"), m_id));  return 0;  }  
private:  int m_id;  
};  int ACE_TMAIN(int, ACE_TCHAR *[])  
{  ACE_DEBUG((LM_DEBUG, ACE_TEXT("the main thread %t has started \n")));  // Create an "active" timer and start its thread  ActiveTimer atimer;  atimer.activate();  CB cb1(1);  CB cb2(2);  int arg1 = 1;  int arg2 = 2;  // Schedule timers to go off 3 & 4 seconds from now  // and then with an interval of 1.1 seconds.  const ACE_Time_Value currTv = ACE_OS::gettimeofday();  ACE_Time_Value interval = ACE_Time_Value(1, 100000);  long tid1 = atimer.schedule(&cb1, &arg1, currTv + ACE_Time_Value(3L), interval);  long tid2 = atimer.schedule(&cb2, &arg2, currTv + ACE_Time_Value(4L), interval);  ACE_Thread_Manager::instance()->wait();  return 0;  };  

这篇关于ACE_Timer_Queue的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1062134

相关文章

C++——stack、queue的实现及deque的介绍

目录 1.stack与queue的实现 1.1stack的实现  1.2 queue的实现 2.重温vector、list、stack、queue的介绍 2.1 STL标准库中stack和queue的底层结构  3.deque的简单介绍 3.1为什么选择deque作为stack和queue的底层默认容器  3.2 STL中对stack与queue的模拟实现 ①stack模拟实现

ActiveMQ—Queue与Topic区别

Queue与Topic区别 转自:http://blog.csdn.net/qq_21033663/article/details/52458305 队列(Queue)和主题(Topic)是JMS支持的两种消息传递模型:         1、点对点(point-to-point,简称PTP)Queue消息传递模型:         通过该消息传递模型,一个应用程序(即消息生产者)可以

Java-数据结构-栈和队列-Stack和Queue (o゚▽゚)o

文本目录: ❄️一、栈(Stack):     ▶ 1、栈的概念:   ▶ 2、栈的使用和自实现:      ☑ 1)、Stack():       ☑ 2)、push(E e):      ☑ 3)、empty():         ☑ 4)、peek(E e):        ☑ 5)、pop(E e):       ☑ 6)、size(E e):  ▶ 3、栈自实现的总代

stack,queue, priority_queue

STL 中栈的使用方法(stack) #include <stack> 基本操作: push(x) 将x加入栈中,即入栈操作 pop() 出栈操作(删除栈顶),只是出栈,没有返回值 top() 返回第一个元素(栈顶元素) size() 返回栈中的元素个数 empty() 当栈为空时,返回 true STL 中队列的使用(queue) #i

HDU 1297 Children’s Queue

题目: http://acm.hdu.edu.cn/showproblem.php?pid=1297 题解: D[n]表示有n个人时,满足排队要求的个数。 分类讨论: 1.第n个人为男生时,满足排队要求的个数等于D[n-1]. 2.第n个人为女生时,第n-1个必为女生,才满足要求。 此处还要进行一次分类: a.前n-2个满足排队要求时,个数为D[n-2]. b.前n-2个不满足

C#通过ACE OLEDB驱动程序访问 Access和 Excel

ACE 代表 Access Connectivity Engine。它是 Microsoft 提供的一组组件,用于访问和操作 Microsoft Access 数据库以及其他类似的文件格式,如 Excel 工作簿。ACE 主要包括以下几部分: ACE OLEDB 驱动程序:用于通过 OLE DB 提供程序访问 Access 数据库和 Excel 文件。例如,Microsoft.ACE.OLED

4.15 版本内核调用 init_timer()函数出错

linux/include/linux/timer.h4.15 之前版本struct timer_list {14 /*15 * All fields that change during normal runtime grouped to the16 * same cacheline17 */18 struct hl

java AWT 绘图,实现弹球游戏,有实现keylistener,timer功能

Timer(int delay, ActionListener listener):每间隔delay毫秒,系统自动触发ActionListener监听器里的事件处理器(actionPerformed()方法)。 package javaAWT;import java.awt.Canvas;import java.awt.Color;import java.awt.Dimension;imp

Timer和ScheduledThreadPoolExecutor

文章来源: https://blog.csdn.net/u013332124/article/details/79603943 在jdk自带的库中,有两种技术可以实现定时任务。一种是使用Timer,另外一个则是ScheduledThreadPoolExecutor。下面为大家分析一下这两个技术的底层实现原理以及各自的优缺点。 一、Timer 1. Timer的使用

C++ STL-Queue容器概念及应用方法详解

1. 再谈队列 队列和栈不同,队列是一种先进先出的数据结构,STL的队列内容极其重要,虽然内容较少但是请务必掌握,STL的队列是快速构建搜索算法以及相关的数论图论的状态存储的基础。 概念:Queue是一种先进先出(First In First Out,FIFO)的数据结构,它有两个出口。 队列容器允许从一端新增元素,从另一端移除元素。队列中只有队头和队尾才可以被外界使用,因此队列不允许有遍历