Win32 API 中有计时器功能。 具体详情请参考:计时器 你需要特别关注以下内容: SetTimer(设置计时器) KillTimer(删除计时器) TimerProc(计时器过程) WM_TIMER(Windows消息——计时器到达)
它确实有用:http://windows-programming.suite101.com/article.cfm/using_the_win32_timer_api 该文章提到的 SetTimer API 依赖于 WM_TIMER 消息,这意味着您必须拥有一个消息循环,这也意味着您(可能)必须拥有一个窗口。因此,在 GUI 编程中非常有用,但在命令行工具中则不太实用。
在POSIX定时器的上下文中回答这个问题有些棘手。Windows API中SetTimer会在GUI线程上创建一个依赖于其消息队列调度机制的计时器,意味着在线程的某处你需要调用GetMessage / DispatchMessage。如果您正在编写非GUI代码,则必须实现消息循环是一种不自然的限制:Windows内核使用同步对象(而不是信号)作为工作(即非GUI)线程接收事件通知的一种方式。CreateWaitableTimer将创建一个句柄,可在工作线程中传递给WaitForSingleObject / WaitForMultipleObjects。或者,您可以创建一个工作线程 - 在其中实现一个计时器(GUI或内核),并在计时器被触发时直接调用您的对象(显然,它必须是线程安全的)。选择取决于您的应用程序到底有多像POSIX。