6
我有一個Windows服務需要定期做某些事情。我應該使用waitable timer objects還是timer queues?等待定時器或定時器隊列?每個的優缺點?
這兩種方法的優缺點是什麼?這是錯誤的二分法嗎?有第三種方法嗎?
我有一個Windows服務需要定期做某些事情。我應該使用waitable timer objects還是timer queues?等待定時器或定時器隊列?每個的優缺點?
這兩種方法的優缺點是什麼?這是錯誤的二分法嗎?有第三種方法嗎?
等待定時器被設計爲通過APC激活代碼。由於再次入侵問題很難正確解決問題,因此只有在需要在佔用的線程上運行代碼時才需要考慮,但通常阻塞的程序塊允許APC運行。
定時器隊列是非常輕量級的對象,它們的回調在線程池的(廉價)線程上運行。幾乎總是適合定期服務。
第三種方法是在服務啓動時啓動一個線程,並使用WaitForSingleObject()的WaitForSingleObject()來設置它的超時時間。你會等待一個事件,表明服務應該停止。非常容易上手,不像計時器隊列那麼精簡。
好評。我們傾向於在SetWaitableTimer中爲完成例程傳遞NULL,將它變成一個正常的,可等待的句柄。任何優點/缺點使用這種方式與定時器隊列? – 2009-12-16 20:17:49
執行WaitForSingleObject方法的另一種方法是使用RegisterWaitForSingleObject - 這種方式仍然可以使用線程池。 – 2009-12-16 21:29:47