2013-02-15 26 views
0

如何实现一个C++定时器功能,其行为如下: void glutTimerFunc(unsigned int msecs,void (*func)(int value), value);但纯粹是WinAPI(或STL)的东西?不过,我需要它不要等待。它需要在X毫秒后调用一个函数谢谢你的任何/所有帮助!执行Windows计时器

我一直在寻找struct timeval tv;,但我对如何实际执行它有点困惑。它需要被替换为glutTimerFunc()。由于

+0

是吗?如果它在另一个线程中调用一个函数?如果是,请查看[计时器队列](http://msdn.microsoft.com/en-us/library/windows/desktop/ms687003(v = vs.85).aspx)。 – 2013-02-15 17:30:14

+0

我不确定,但它需要更新变量。我仍然在学习线程,但我猜这是行不通的。 – user2068060 2013-02-15 17:56:04

回答

2

使用可等待计时器 - SetWaitableTimer调用CreateWaitableTimer

在适当的时间到达后,计时器发出信号并线程 设置定时调用可选的完成例程。

有一个我认为是你想要的使用模式here的例子。

+0

我认为这是一个忙碌的等待,就像我运行delay()函数类型一样。 - 更精确。 – user2068060 2013-02-16 11:25:08

+1

不,这不是一个忙碌的等待。 'SleepEx'让线程进入睡眠状态;只有当APC到达时,内核才会唤醒它。请参阅http://msdn.microsoft.com/en-us/library/windows/desktop/ms686307%28v=vs.85%29.aspx – 2013-02-18 09:37:53