等待定时器内核对象
来源:互联网 发布:发卡平台源码2016免费 编辑:程序博客网 时间:2024/05/16 17:43
相关函数:
CreateWaitableTimer(LPSECURITY_ATTRIBUTES lpTimerAttributes, BOOL bManualReset, LPCTSTR lpTimerName);
参数:
lpTimerAttributes:一个结构体,用于设置对象的安全特性
bManualReset:如果为TRUE,表示创建一个人工重置计时器;如果为FALSE,则创建一个自动重置计时器
lpTimerName:指定可等待计时器对象的名称
如果已经存在一个拥有这个名字的可等待计时器,就直接打开现成的可等待计时器。
返回值:
如执行成功,返回可等待计时器对象的句柄;零表示出错。如果GetLastError返回ERROR_ALREADY_EXISTS表示同名的计时器对象已经存在。
SetWaitableTimer(HANDLE hTimer,
const LARGE_INTEGER *pDueTime,
LONG lPeriod,
PTIMERAPCROUTINE pfnCompletionRoutine,
LPVOID lpArgToCompletionRoutine,
BOOL fResume);
参数:
hTimer:指定你要设置的定时器
pDueTime:表示第一次触发的时间
lPeriod:表示每隔多长时间触发一次
pfnCompletionRoutine:表示回调函数
lpArgToCompletionRoutine:表示传入回调函数的参数
fResume:如果为TRUE,而且系统支持电源管理,那么在计时器触发的时候,系统会退出省电模
式。如设为TRUE,但系统不支持省电模式,GetLastError就会返回ERROR_NOT_SUPPORTED 适用平台。一般设为FALSE
CancelWaitableTimer(HANDLE hTimer);
该函数用于取消一个可以等待下去的计时器,除非以后再调用SetWaitableTimer来对它进行重置,否则它将一直保持它当前的状态。
CloseHandle(HANDLE hObject);
关闭计时器对象句柄。
CreateWaitableTimer(LPSECURITY_ATTRIBUTES lpTimerAttributes, BOOL bManualReset, LPCTSTR lpTimerName);
参数:
lpTimerAttributes:一个结构体,用于设置对象的安全特性
bManualReset:如果为TRUE,表示创建一个人工重置计时器;如果为FALSE,则创建一个自动重置计时器
lpTimerName:指定可等待计时器对象的名称
如果已经存在一个拥有这个名字的可等待计时器,就直接打开现成的可等待计时器。
返回值:
如执行成功,返回可等待计时器对象的句柄;零表示出错。如果GetLastError返回ERROR_ALREADY_EXISTS表示同名的计时器对象已经存在。
SetWaitableTimer(HANDLE hTimer,
const LARGE_INTEGER *pDueTime,
LONG lPeriod,
PTIMERAPCROUTINE pfnCompletionRoutine,
LPVOID lpArgToCompletionRoutine,
BOOL fResume);
参数:
hTimer:指定你要设置的定时器
pDueTime:表示第一次触发的时间
lPeriod:表示每隔多长时间触发一次
pfnCompletionRoutine:表示回调函数
lpArgToCompletionRoutine:表示传入回调函数的参数
fResume:如果为TRUE,而且系统支持电源管理,那么在计时器触发的时候,系统会退出省电模
式。如设为TRUE,但系统不支持省电模式,GetLastError就会返回ERROR_NOT_SUPPORTED 适用平台。一般设为FALSE
CancelWaitableTimer(HANDLE hTimer);
该函数用于取消一个可以等待下去的计时器,除非以后再调用SetWaitableTimer来对它进行重置,否则它将一直保持它当前的状态。
CloseHandle(HANDLE hObject);
关闭计时器对象句柄。
#include <Windows.h>#include <iostream>using namespace std;HANDLE hTimer = NULL;LARGE_INTEGER liDueTime;DWORD WINAPI MyThreadProc(LPVOID lpParam){while (TRUE) {if (WaitForSingleObject(hTimer, INFINITE) != WAIT_OBJECT_0) {CloseHandle(hTimer);cout << "出错,退出!" << endl;break;} else {//10秒钟到达SetWaitableTimer(hTimer, &liDueTime, 0, NULL, NULL, 0);//将hTimer信息重置为无信号,如果不然就会不断的输出cout << "10秒钟定时器到了!" << endl;}}return 0L;}int main(){//设置相对时间为10秒liDueTime.QuadPart = -100000000;//创建一个人工重置的定时器hTimer = CreateWaitableTimer(NULL, TRUE, TEXT("TestWaitableTimer"));if (!hTimer) {return -1;}HANDLE hThread = CreateThread(NULL, 0, MyThreadProc, NULL, 0, NULL);CloseHandle(hThread);cout << "10秒钟定时器创建成功!" << endl;// 设置10秒钟if (!SetWaitableTimer(hTimer, &liDueTime, 0, NULL, NULL, 0)) {CloseHandle(hTimer);}system("pause");return 0;}
0 0
- 等待定时器内核对象
- windows笔记-【内核对象线程同步】等待定时器内核对象
- -【内核对象线程同步】等待定时器内核对象
- windows笔记-【内核对象线程同步】等待定时器内核对象
- 线程同步 等待定时器 WaitableTimer 内核对象 CreateWaitableTimer
- -【内核对象线程同步】等待函数
- 可等待的计时器内核对象
- 内核对象--可等待计时器WaitableTimer(一)
- 内核对象--可等待计时器WaitableTimer(二)
- 多线程 -- 等待函数、事件内核对象
- 多线程 -- 可等待的计时器内核对象
- ucosIII 同时等待多个内核对象
- 多线程编程(14) - 多线程同步之 WaitableTimer (等待定时器对象)
- -【内核对象线程同步】成功等待的副作用
- 【内核对象线程同步】成功等待的副作用
- 白话windows多线程同步之可等待计时器内核对象
- UCOSIII同时等待多个内核对象(待更)
- osIII任务同时等待多个内核对象
- Servlet的Model2模型详解及简单购物车的实现
- 白百何出轨了,尼玛,陈羽凡版特写Bug
- 【java】<< 、>>、 <<<移位运算符
- pr视频剪辑
- Android Studio Databinding在xml中使用中文报错
- 等待定时器内核对象
- 吃屎也要吃明明白白的屎——两篇检讨的启示
- 四 : LinkedBlockingQueue 链阻塞队列
- fl2440添加USB驱动
- 面向对象——匿名对象
- 单内核和微内核
- angular过滤器
- Java操作Excel表格
- 剑指offer--用两个栈实现队列