我正在寫一個事件處理函數,f(d)
,接收一些數據,d
,並且必須採取採取行動X(d)
,然後睡超過100ms,然後採取其他操作Y(d)
。我將執行它爲:單次定時器在C++的WinCE
void f(d)
{
X(d);
Sleep(100);
Y(d);
}
然而,f(d)
從單線程事件處理程序調用,所以睡眠(100)是不可接受的。
我想做到以下幾點:
void f(d)
{
X(d);
ScheduleOneShotTimer(Y,d,100);
}
我可以通過爲每個調用一個新的線程,傳遞數據作爲參數的線程和執行Y(d)
之前調用Sleep
實施ScheduleOneShotTimer
。但是,由於此事件可能每秒發生多達100次,因此我擔心創建銷燬所有這些線程的開銷。
最好有一個「一次性計時器」的操作系統級支持,但我不認爲這是CE的情況。我知道SetTimer,但這不適用於我,因爲我正在編寫一個沒有消息循環的「控制檯應用程序」。
任何其他建議如何構造這將不勝感激。
謝謝。偉大的小API。但事實證明,我所需要的只是批量處理X個電話,然後睡眠100ms,然後以批量方式執行Ys。 (另外,我關心timeSetEvent API的資源開銷:它是否爲每個事件創建新線程?如果不是,它如何處理這些事件中的阻塞或睡眠?我希望有更多文檔可用。) –
它被驅動通過定時器中斷。我相信每個回調都會產生一個單獨的線程,儘管它很容易測試。 – ctacke