线程池之每隔一段时间调用一个函数

本文介绍如何使用Windows线程池API创建定时任务,包括创建、设置、关闭线程池定时器,并通过示例代码展示如何指定回调函数处理定时事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

步骤:

  1、创建一个类似于void CALLBACK TimeoutCallBack(PTP_CALLBACK_INSTANCE pInstance, PVOID pvContext, PTP_TIMER pcbe)的函数

  2、CreateThreadpoolTimer

  3、SetThreadpoolTimer

  4、CloseThreadpoolTimer

理解:

  其实就是相当于一个可等待的内核对象,不可在实现上,采用了线程池的技术。

代码:

#include <iostream>
#include <afx.h>
using namespace std;

void CALLBACK TimeoutCallBack(
	PTP_CALLBACK_INSTANCE pInstance,
	PVOID pvContext,
	PTP_TIMER pcbe)
{
	cout << "线程ID:" << GetCurrentThreadId() << endl;
}

void main()
{
	PTP_TIMER pTimer = CreateThreadpoolTimer(TimeoutCallBack, NULL, NULL);
	
	SYSTEMTIME st;
	FILETIME ftLocal, ftUTC;
	LARGE_INTEGER liUTC;

	st.wYear = 2013;
	st.wMonth = 9;
	st.wDay = 26;
	st.wDayOfWeek = 0;
	st.wHour = 12;
	st.wMinute = 46;
	st.wSecond = 0;
	st.wMilliseconds = 0;

	SystemTimeToFileTime(&st, &ftLocal);
	LocalFileTimeToFileTime(&ftLocal, &ftUTC);

	liUTC.LowPart = ftUTC.dwLowDateTime;
	liUTC.HighPart = ftUTC.dwHighDateTime;

	SetThreadpoolTimer(pTimer, &ftUTC, 1000, 0);

	Sleep(2000);

	WaitForThreadpoolTimerCallbacks(pTimer, TRUE);

	CloseThreadpoolTimer(pTimer);
}

 结果:

  

 

转载于:https://www.cnblogs.com/wang-can/p/3340591.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值