【发布时间】:2009-05-21 17:31:52
【问题描述】:
我有一个 C++ 函数,需要在一段时间后调用,并且重复此任务。你知道Win32或pthread中的任何内置函数或示例代码吗?
谢谢,
朱利安
【问题讨论】:
标签: c++ multithreading winapi
我有一个 C++ 函数,需要在一段时间后调用,并且重复此任务。你知道Win32或pthread中的任何内置函数或示例代码吗?
谢谢,
朱利安
【问题讨论】:
标签: c++ multithreading winapi
SetTimer 怎么样。
【讨论】:
顺便说一句,我希望您不要在代码中做一些可以通过操作系统完成的事情。 (我不太了解您的要求,但我想我会指出来)。
诸如任务调度器(windows)之类的东西是为调度重复性任务而设计的,它们通常比手动解决方案做得更好。
【讨论】:
设置定时器!
一个例子:
#include <windows.h>
#include <stdio.h>
void CALLBACK scheduled_task_1 (HWND hwnd, UINT msg, UINT id, DWORD time)
{
puts("Executing scheduled_task_1 every half-second event");
}
void CALLBACK scheduled_task_2 (HWND hwnd, UINT msg, UINT id, DWORD time)
{
puts("Executing scheduled_task_2 every two seconds event");
}
void CALLBACK scheduled_task_3 (HWND hwnd, UINT msg, UINT id, DWORD time)
{
puts("Executing scheduled_task_3 24 hours event");
}
void messageLoop(void) {
MSG msg;
while (GetMessage(&msg, NULL, 0, 0) > 0)
DispatchMessage( &msg );
}
int main(void)
{
while(true)
{
SetTimer (NULL, 0, 500, scheduled_task_1); /* every half-second */
SetTimer (NULL, 0, 2000, scheduled_task_2); /* every two seconds */
SetTimer (NULL, 0, 60*60*24*1000, scheduled_task_3); /* after 24 hours or 86400000 milliseconds */
messageLoop();
}
return 0;
}
【讨论】: