每隔X秒运行一次函数c ++

时间:2017-07-17 08:54:17

标签: c++ multithreading

我在控制台应用程序中使用VC ++ 2008。我想每隔x秒调用一次函数。我有一段代码,但问题是setTimer背后的代码没有执行。我看起来像一个同时计时器或线程,但由于我的c ++版本是旧的我不能包括线程或计时。谁能帮我?提前谢谢。

代码在这里:

void CALLBACK f(HWND hwnd, UINT uMsg, UINT timerId, DWORD dwTime){cout <<"Hello";}

int _tmain(){
MSG msg;
SetTimer(NULL, 0, 100*60,(TIMERPROC) &f);
while(GetMessage(&msg, NULL, 0, 0)) 
{
    TranslateMessage(&msg);
    DispatchMessage(&msg);
}
//more code to be execute, but it does not.
return 0;}

此问题已被标记为重复,但问题不在于消息未显示,这是正确的。问题是创建一个计时器并同时运行程序。

1 个答案:

答案 0 :(得分:0)

#include <time.h>

float timeDelta = 0;
clock_t clk = clock(), temp;

while (timeDelta <= /*NumSecondsDesire*/)
{
    temp = clock() - clk;
    clk = clock();
    timeDelta += (float)((float)temp / CLOCKS_PER_SEC);
}

那应该为你做。 clock()返回单击次数,然后将其除以处理器指定的CLOCKS_PER_SEC以获取秒数。您可能希望在if语句中使用该情况,在这种情况下,在每次迭代时将timeDelta重置为= 0,其中timeDelta = NumSecondsDesired。