线程同步(计时器)
来源:互联网 发布:淘宝上的海外专营店 编辑:程序博客网 时间:2024/06/11 08:53
1.CreateWaitableTimer()函数创建等待计时器。
2.SetWaitableTimer()函数设置创建的计时器时间间隔。
3.CancelWaitableTimer()函数取消计时器。
#include <stdio.h>#include <stdlib.h>#include <windows.h>#define WIN32_WINNT 0x500#define ONE_SECOND 10000000typedef struct _APC_PROC_ARG{ TCHAR *szText; DWORD dwValue;}APC_PROC_ARG;VOID CALLBACK TimerAPCProc(LPVOID lpArg,DWORD dwTimerLowValue,DWORD dwTimerHighValue){ APC_PROC_ARG *pApcData=(APC_PROC_ARG *)lpArg; printf("Message :%s\n Value :%d\n\n",pApcData->szText,pApcData->dwValue); MessageBeep(MB_OK);}void main(void){ HANDLE hTimer; BOOL bSuccess; INT64 qwDueTime; LARGE_INTEGER liDueTime; APC_PROC_ARG ApcData; ApcData.szText="message to apc proc."; ApcData.dwValue=1; hTimer=CreateWaitableTimer(NULL,FALSE,"MyTimer"); if(!hTimer) { printf("CreateWaitableTimer failed with Error %d.",GetLastError()); return; } else { _try { qwDueTime=-5*ONE_SECOND; liDueTime.LowPart=(DWORD)(qwDueTime & 0xFFFFFFFF); liDueTime.HighPart=(LONG)(qwDueTime >> 32); bSuccess=SetWaitableTimer(hTimer,&liDueTime,2000,TimerAPCProc,&ApcData,FALSE); if(bSuccess) { for(;ApcData.dwValue<10;ApcData.dwValue++) { SleepEx(INFINITE,TRUE); } } else { printf("SetWaitableTimer failed with Error %d.",GetLastError()); } } _finally { CloseHandle(hTimer); } }}
0 0
- 线程同步(计时器)
- 线程并发库(计时器,同步)
- 线程同步之可等的计时器
- 用线程同步函数超时机制做计时器
- 线程计时器
- 服务器计时器、Windows 计时器和线程计时器
- 简单的Java秒表计时器(线程)
- Chapter09-“内核模式下的线程同步”之可等待的计时器内核对象
- 线程同步——内核对象(互斥、事件、信号量、可等待计时器)
- BOOST-计时器-同步、异步(boost::asio::deadline_timer)
- java线程(线程同步)
- 线程(二)-线程同步
- 计时器线程Timer
- 线程池的计时器
- 线程池计时器
- iOS开发 线程计时器
- android 计时器线程
- C# 线程计时器
- C语言代码合并神器for Mac
- LeetCode 63. Unique Paths II
- myEclipse中的web项目直接引入到eclipse中运行
- 二叉搜索树
- hibernate笔记
- 线程同步(计时器)
- SecureCRT 连接虚拟机Linux
- SpringMvc Eclipse搭建web项目
- C语言代码计算神器for Mac
- A* 寻路
- 软件开发生命周期的管理
- android五中方式调用服务service中的方法
- [Contest] THUSC 2016 解题报告
- tomcat java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListen