winapi - 可等待定时器还是定时器队列?各自的优点和缺点?

标签 winapi

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

这两种方法各有什么优缺点?这是错误的二分法吗?还有第三条路吗?

最佳答案

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

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

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

关于winapi - 可等待定时器还是定时器队列?各自的优点和缺点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1915441/

相关文章:

matlab - 是否可以在 Windows 8 上安装适用于 Windows 7 的 Windows SDK?

delphi - 在 Delphi 中,如何检查 IInterface 引用是否实现派生但未显式支持的接口(interface)?

c++ - 通过命令行使用 gcc 编译 win32 应用程序时,如何链接 .rc(资源)文件?

c++ - 将窗口设置为始终在 Windows 7 上的桌面上

c++ - 使用 VirtualDisk API 创建 VHD 文件

C++ 如何通过 win32 api 检索文件权限和所有权

c++ - 不同的 RegisterWindowMessage() 名称显示相同

winapi - 什么时候创建消息队列?

c++ - 如何知道附加的windowstation是否是交互式的?

c - 在 GDI 中绘制文本并使其适合矩形?