Using Timer Queues
The following example creates a timer routine that will be executed by a thread from a timer queue after a 10 second delay. First, the code uses the CreateEvent function to create an event object that is signaled when the timer-queue thread completes. Then it creates a timer queue and a timer-queue timer, using the CreateTimerQueue and CreateTimerQueueTimer functions, respectively. The code uses the WaitForSingleObject function to determine when the timer routine has completed. Finally, the code calls DeleteTimerQueue to clean up.
For more information on the timer routine, see WaitOrTimerCallback.
Copy
#include
#include
HANDLE gDoneEvent;
VOID CALLBACK TimerRoutine(PVOID lpParam, BOOLEAN TimerOrWaitFired)
{
if (lpParam == NULL)
{
printf("TimerRoutine lpParam is NULL/n");
}
else
{
// lpParam points to the argument; in this case it is an int
printf("Timer routine called. Parameter is %d./n",
*(int*)lpParam);
if(TimerOrWaitFired)
{
printf("The wait timed out./n");
}
else
{
printf("The wait event was signaled./n");
}
}
SetEvent(gDoneEvent);
}
int main()
{
HANDLE hTimer = NULL;
HANDLE hTimerQueue = NULL;
int arg = 123;
// Use an event object to track the TimerRoutine execution
gDoneEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
if (NULL == gDoneEvent)
{
printf("CreateEvent failed (%d)/n", GetLastError());
return 1;
}
// Create the timer queue.
hTimerQueue = CreateTimerQueue();
if (NULL == hTimerQueue)
{
printf("CreateTimerQueue failed (%d)/n", GetLastError());
return 2;
}
// Set a timer to call the timer routine in 10 seconds.
if (!CreateTimerQueueTimer( &hTimer, hTimerQueue,
(WAITORTIMERCALLBACK)TimerRoutine, &arg , 10000, 0, 0))
{
printf("CreateTimerQueueTimer failed (%d)/n", GetLastError());
return 3;
}
// TODO: Do other useful work here
printf("Call timer routine in 10 seconds.../n");
// Wait for the timer-queue thread to complete using an event
// object. The thread will signal the event at that time.
if (WaitForSingleObject(gDoneEvent, INFINITE) != WAIT_OBJECT_0)
printf("WaitForSingleObject failed (%d)/n", GetLastError());
CloseHandle(gDoneEvent);
// Delete all timers in the timer queue.
if (!DeleteTimerQueue(hTimerQueue))
printf("DeleteTimerQueue failed (%d)/n", GetLastError());
return 0;
}
相关推荐
手把手教你用VCS+Verdi在Linux下仿真蜂鸟E203 RISC-V核(附波形调试技巧)
本文详细介绍了在Linux环境下使用VCS和Verdi工具链对蜂鸟E203 RISC-V核进行仿真验证的完整流程。从环境配置、工程结构解析到VCS编译优化和Verdi波形分析技巧,提供了实战性强的调试方法和性能优化策略,帮助工程师高效完成数字IC验证工作。
Windows系统中的 Timer Queues 、SetTimer
今日比较了一下Windows系统中的 Timer Queues(http://msdn.microsoft.com/en-us/library/ms686796%28VS.85%29.aspx)与 SetTimer (http://msdn.microsoft.com/en-us/library/ms644906%28VS.85%29.aspx)这两种定时器。 发现这两种定时器的一
海康SDK回调PS流解析实战:从字节流到前端H264播放的完整流程
本文详细介绍了海康SDK回调PS流解析的完整流程,从字节流获取到前端H264播放的实现。涵盖SDK初始化、PS流数据结构解析、H264裸流提取、WebSocket传输及前端播放器集成等关键步骤,为视频监控系统开发提供实用指导。
muduo网络库学习笔记(三)TimerQueue定时器队列
目录 muduo网络库学习笔记(三)TimerQueue定时器队列 Linux中的时间函数 timerfd简单使用介绍 timerfd示例 muduo中对timerfd的封装 TimerQueue的结构. Timer ...
Rsoft仿真实战:长周期光纤光栅参数优化与模式耦合分析
本文详细介绍了使用Rsoft软件进行长周期光纤光栅(LPFG)参数优化与模式耦合分析的实战方法。通过Rsoft仿真,可以高效优化光栅周期、包层厚度等关键参数,深入分析纤芯模与包层模的耦合特性,为光纤通信和传感应用提供可靠的设计依据。
TimerQueue类详解
TimerQueue.h #ifndef MUDUO_NET_TIMERQUEUE_H #define MUDUO_NET_TIMERQUEUE_H #include #include #include #include #include #include #include namespace muduo { namespace
arcgis计算栅格平均值
打开FC栅格数据和非水体矢量数据 利用矢量数据提取对应栅格的非水体部分 2.1打开空间分析工具à提取分析à按掩膜提取 输入对应栅格数据和矢量数据 2.2提取结果如下 进行计算FC平均值 3.1打开空间分析工具à多元分析à波段集统计 输入对应栅格和输出路径 3.2统计结果如下 ...
c# timer 销毁_.NET中Timer 如何正确地被Dispose
原标题:.NET中Timer 如何正确地被Dispose转自:PowerCodercnblogs.com/OpenCoder/p/10728839.htmlSystem.Threading.Timer是.NET中一个定时触发事件处理方法的类(本文后面简称Timer),它背后依靠的是.NET的线程池(ThreadPool)所以当Timer在短时间内触发了过多的事件处理方法后,可能会造成事件处理方法在...
芒果YOLOv1改进35:主干Backbone篇之MobileViTv3:全网首发最新 MobileViTv3 系列最强改进版本(三)|轻量化Transformer视觉转换器,简单有效地融合了本地全局
芒果YOLOv1改进35:主干Backbone篇之MobileViTv3:全网首发最新 MobileViTv3 系列最强改进版本(三)|轻量化Transformer视觉转换器,简单有效地融合了本地全局
SAP-ABAP:ABAP 开发基础概念入门:写给刚踏入 SAP 开发世界的新人
本文介绍了 ABAP 开发语言的基础概念,帮助 SAP 开发新人快速入门。主要内容包括: ABAP 的发展历程与核心优势 - 作为 SAP 平台的专属语言,ABAP 在企业级应用开发中具有深度集成、数据处理高效和长期稳定的特点 ABAP 开发环境概览 - 介绍了 SE38、SE80 等关键事务码,以及 ABAP 工作台的核心组件和开发权限管理 基础语法入门 - 重点讲解了 ABAP 特有的数据类型体系(特别是结构体和内表),并通过 Hello World 示例展示程序基本结构 文章通过对比 ABAP 与 J
nrf51822 app_timer
它的源代码和头文件分别为app_timer.c/app_timer.h。这是Nordic为我们提供的虚拟定时器,这个定时器不同于硬件上的TIMER,而是基于RTC1实现的一种虚拟定时器,其将定时功能作为了一个资源进行管理,所以会有初始化、创建等过程。 nrf51822的SDK采用封装思想,需要暴露给用户的信息都在相关模块的头文件中;为了提醒用户不去看具体实现细节,我们可以发现相关的A
廖雪峰Python教程[完整版]
廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白
内核定时器,schedule_timeout, ,POSIX timer
一、内核timer 1、内核定时器 init_timeout,mod_timer,add_timer ----------- 通过软中断实现。将定时器按照超时时间分为五组,每个tick都会触发执行定时器软中断检查是否有超时的定时器。 2、hrtimer ----------- 高分辨率定时器,HRTIMER_CB_SOFTIRQ类型的hrtimer通过软中断实现。 3、schedule_
SIMATIC S7-1200, S7-1500 PID 控制[手册]
SIMATIC S7-1200, S7-1500 PID 控制[手册]
老版QQ原生表情gif动态
这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。
nordic 51822 sdk. timer 的使用
它的源代码和头文件分别为app_timer.c/app_timer.h。这是Nordic为我们提供的虚拟定时器,这个定时器不同于硬件上的TIMER,而是基于RTC1实现的一种虚拟定时器,其将定时功能作为了一个资源进行管理,所以会有初始化、创建等过程。 nrf51822的SDK采用封装思想,需要暴露给用户的信息都在相关模块的头文件中;为了提醒用户不去看具体实现细节,我们可以发现相关的API,比...
C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片
基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正
ACE_Abstract_Timer_Queue
文章目录ACE_Abstract_Timer_Queue模板参数成员类型成员函数is_emptyearliest_timescheduleexpireexpire_singlereset_intervalcancelclosegettimeofdaycalculate_timeoutcurrent_time ACE_Abstract_Timer_Queue template<typename TYPE> class ACE_Abstract_Timer_Queue; 所有单类型定时器队列的基类
JAVA Timer 的使用例子
Java 的 java.util 中有 Timer 这个类,在处理一些定时执行的程序或者重复多次执行的程序时就比较有用。而在这里面有几个比较重要的类: 1. Task Queue 在内部,Timer 使用 TaskQueues 来维护要处理的任务。这些任务会被 TimerThread 顺序的执行. 2. Timer Thread Timer Thread 会监视 Task Queues
net 控制台 定时_.NET中Timer 如何正确地被Dispose
(给DotNet加星标,提升.Net技能)转自:PowerCodercnblogs.com/OpenCoder/p/10728839.htmlSystem.Threading.Timer是.NET中一个定时触发事件处理方法的类(本文后面简称Timer),它背后依靠的是.NET的线程池(ThreadPool)所以当Timer在短时间内触发了过多的事件处理方法后,可能会造成事件处理方法在线程...
java timer 闪烁_java-改善我的JLabel闪烁
使用javax.swing.TImer.看一个例子:编辑:使用不同的变量,如前所述,计数器变量显示相同的值.import java.awt.*;import java.awt.event.*;import javax.swing.*;public class LabelExample {private Timer timer;private JButton button;private JLabe...
Linux 内核时钟之触发local timer
/* * Called by the local, per-CPU timer interrupt on SMP. */ void run_local_timers(void) { struct timer_base *base = this_cpu_ptr(&timer_bases[BASE_STD]); hrtimer_run_queues(); /* Raise the
nRF52(SDK12)添加定时器任务
在裸机程序中,有timer例子,直接使用没有任何问题,但是不能直接用在BLE程序中。在BLE程序中使用就有些麻烦,BLE本身也使用了定时器,如果APP再使用算是借用。SDK12的BLE例子中也没有找到完整的例子。网上找到nrf52 Application Timer和nrf52-添加定时任务。 前者例子: // General application timer settings. #define...
Direct Component/SEDA Component/VM Component/Timer Component/Log Component/Cache Component
http://camel.apache.org/direct.html Direct Component The direct: component provides direct, synchronous invocation of any consumers when a producer sends a message exchange. This endpoint can be us
linux 中高精度timer的实现
软超时处理的入口是hrtimer_run_softirq,这个线程中会找到达到了软超时的task(__hrtimer_run_queues),判断它没有disable(tasklet_struct->count==0)且处于TASKLET_STATE_SCHED的task(软超时的任务,__run_hrtimer),执行它的func或callback,并更新下一个即将到达的软超时时间。,并更新超时时间,这样如果是用户调用的nanosleep,则在返回用户空间前,会自动重新调nanosleep。
linux高精度模式,Linux hrtimer分析--未配置高精度模式
2.hrtimer的基本操作Linux的传统定时器通过时间轮算法实现(timer.c),但hrtimer通过红黑树算法实现。在struct hrtimer里面有一个node域,类型为struct rb_node,这个域代表了hrtimer在红黑树中的位置。2.1 hrtimer_starthrtimer_start函数将一个hrtimer加入到一个按照到期时间排序的红黑树中,其主要流程为:int...
[softlockup crash分析]一个和timer相关的死锁分析
设备crash,提示 PANIC: “Kernel panic - not syncing: softlockup: hung tasks” 。遇到这个要先确认是真死锁还是软中断执行时间过长被误判死锁。 有个简单的办法区分,就是如果异常栈crash在锁等待,那么就是真死锁;如果crash在其他地方,大概率就是执行时间过长被误判死锁。 查看异常栈: PID: 0 TASK: ffffffff819c5460 CPU: 0 COMMAND: "swapper/0" #0 [ffff88007f
415



被折叠的 条评论
为什么被折叠?



