等待定时器还是定时器队列?各有利弊?

时间:2009-12-16 15:39:04

标签: winapi

我有一个需要定期执行某些操作的Windows服务。我应该使用waitable timer objects还是timer queues

这两种方法的优点和缺点是什么?这是一个错误的二分法吗?还有第三种方式吗?

1 个答案:

答案 0 :(得分:7)

等待计时器旨在通过APC激活代码。由于重新入侵问题,这很难做到正确,只有当你需要在一个被占用的线程上运行代码但是通常足以允许APC运行的线程时才应该考虑。

计时器队列是非常轻量级的对象,它们的回调运行在来自线程池的(廉价)线程上。几乎总是有利于定期服务。

第三种方法是在服务启动时启动一个线程,并使用WaitForSingleObject()来阻止其超时设置周期。你会等待一个表明服务应该停止的事件。非常容易上手,不像计时器队列那样精简。