您的位置:首页 > 大数据 > 人工智能

42 windows_42_Thread_WaitableTimer 线程 - 等候线程

2016-06-10 20:45 411 查看

windows_42_Thread_WaitableTimer 线程 - 等候线程

// windows_42_Thread_WaitableTimer.cpp : 定义控制台应用程序的入口点。

//


#include "stdafx.h"

#include "windows.h"


HANDLE g_hTimer = NULL;

//等候线程

DWORD WINAPI TimerThread( LPVOID pParam )

{

while (true)

{

WaitForSingleObject( g_hTimer, INFINITE );

printf( "Hello Timer\n" );

}

}


VOID CALLBACK TimerAPCProc(

LPVOID lpArgToCompletionRoutine,   // data value

DWORD dwTimerLowValue,             // timer low value

DWORD dwTimerHighValue            // timer high value

)

{

printf( "-------------APC TimerProc-------------\n" );

}

void APCTimer( )

{

//创建定时器

HANDLE hTimer = CreateWaitableTimer( NULL, FALSE, NULL );

//设置定时器

UINT64 nDueTime = -10000000;

SetWaitableTimer( hTimer, (PLARGE_INTEGER)&nDueTime, 1000, TimerAPCProc, NULL, FALSE );


while (true)

{

SleepEx( -1, TRUE );

}


//关闭句柄

CloseHandle( hTimer );

}

void Create( )

{

//创建定时器

g_hTimer = CreateWaitableTimer( NULL, FALSE, NULL );

//设置定时器

UINT64 nDueTime = -50000000;//百纳秒级别

SetWaitableTimer( g_hTimer, (PLARGE_INTEGER)&nDueTime/*转换成UINT64处理*/,

1000, NULL, NULL, FALSE );



//创建等候线程

DWORD dwThreadID = 0;

HANDLE hThread = CreateThread( NULL, 0, TimerThread, NULL,

0, &dwThreadID );

WaitForSingleObject( hThread, INFINITE );


//关闭定时器

CloseHandle( g_hTimer );

}


int _tmain(int argc, _TCHAR* argv[])

{

//Create( );

APCTimer( );

return 0;

}

[/code]

来自为知笔记(Wiz)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: