2013-02-15 28 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