42 windows_42_Thread_WaitableTimer 线程 - 等候线程

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. }





posted @ 2016-06-10 20:45  -刀狂剑痴-  阅读(163)  评论(0编辑  收藏  举报