博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
42 windows_42_Thread_WaitableTimer 线程 - 等候线程
阅读量:6864 次
发布时间:2019-06-26

本文共 1337 字,大约阅读时间需要 4 分钟。

windows_42_Thread_WaitableTimer 线程 - 等候线程

 
  1. // windows_42_Thread_WaitableTimer.cpp : 定义控制台应用程序的入口点。
  2. //
  3. #include "stdafx.h"
  4. #include "windows.h"
  5. HANDLE g_hTimer = NULL;
  6. //等候线程
  7. DWORD WINAPI TimerThread( LPVOID pParam )
  8. {
  9. while (true)
  10. {
  11. WaitForSingleObject( g_hTimer, INFINITE );
  12. printf( "Hello Timer\n" );
  13. }
  14. }
  15. VOID CALLBACK TimerAPCProc(
  16. LPVOID lpArgToCompletionRoutine, // data value
  17. DWORD dwTimerLowValue, // timer low value
  18. DWORD dwTimerHighValue // timer high value
  19. )
  20. {
  21. printf( "-------------APC TimerProc-------------\n" );
  22. }
  23. void APCTimer( )
  24. {
  25. //创建定时器
  26. HANDLE hTimer = CreateWaitableTimer( NULL, FALSE, NULL );
  27. //设置定时器
  28. UINT64 nDueTime = -10000000;
  29. SetWaitableTimer( hTimer, (PLARGE_INTEGER)&nDueTime, 1000, TimerAPCProc, NULL, FALSE );
  30. while (true)
  31. {
  32. SleepEx( -1, TRUE );
  33. }
  34. //关闭句柄
  35. CloseHandle( hTimer );
  36. }
  37. void Create( )
  38. {
  39. //创建定时器
  40. g_hTimer = CreateWaitableTimer( NULL, FALSE, NULL );
  41. //设置定时器
  42. UINT64 nDueTime = -50000000;//百纳秒级别
  43. SetWaitableTimer( g_hTimer, (PLARGE_INTEGER)&nDueTime/*转换成UINT64处理*/,
  44. 1000, NULL, NULL, FALSE );
  45. //创建等候线程
  46. DWORD dwThreadID = 0;
  47. HANDLE hThread = CreateThread( NULL, 0, TimerThread, NULL,
  48. 0, &dwThreadID );
  49. WaitForSingleObject( hThread, INFINITE );
  50. //关闭定时器
  51. CloseHandle( g_hTimer );
  52. }
  53. int _tmain(int argc, _TCHAR* argv[])
  54. {
  55. //Create( );
  56. APCTimer( );
  57. return 0;
  58. }

转载于:https://www.cnblogs.com/nfking/p/5574192.html

你可能感兴趣的文章
ubuntu16.04 配置双网卡机器
查看>>
集训第四周(高效算法设计)O题 (构造题)
查看>>
性能测试方案
查看>>
计算机系统的设计规则,性能评测
查看>>
【数论】【Polya定理】【枚举约数】【欧拉函数】【Java】poj2154 Color
查看>>
【枚举】【SPFA】Urozero Autumn Training Camp 2016 Day 5: NWERC-2016 Problem I. Iron and Coal
查看>>
maven生成war包的两种方式
查看>>
SQL Server 高级操作 视图和存储过程
查看>>
jre,jdk,jvm的关系
查看>>
mybatis的面试一对一,一对多,多对多的mapper.xml配置
查看>>
Python之路【第十二篇】:函数
查看>>
切记切记:Spring配置文件中,Component-scan无法扫描到的类中的自动装配对象无法被调用,报空指针错误。...
查看>>
UVA - 10591 Happy Number
查看>>
php 封装
查看>>
MVC 理解小谈
查看>>
php跨域cookie共享使用方法
查看>>
[C#]解决生成的缩略图模糊的问题
查看>>
mysql中修改字段的类型
查看>>
路由个数据包转发简介
查看>>
OBS插件学习入门:一个非常简单的、调节音量的filter
查看>>