【发布时间】:2023-03-18 19:36:01
【问题描述】:
在我的一个项目中,我需要有效地安排不同的操作一遍又一遍地执行,每个操作都有自己的时间间隔。
我一直在想,当我使用SetTimer 函数时,后台会发生什么?
是否创建了新线程? 它会在后台运行并吃掉我的 CPU 吗?或者它会一直休眠到操作系统唤醒它的时间到来? 拥有大量计时器是否可行,或者是否有充分的理由尝试尽量减少它们的数量?
谢谢。
【问题讨论】:
-
SetTimer 不会创建新线程。会发生什么取决于您是否使用 timerproc(最后一个参数)。
-
您能否进一步解释或将我们好奇的程序员重定向到某个地方,并解释那里究竟发生了什么以及如何发生?
-
那太宽泛了,包括操作系统调度、增量队列、计时器对象、Windows 消息队列、WM_TIMER 消息的组合等。有关更多详细信息,您应该咨询好的“Windows Internals”之一' 书。
标签: c++ multithreading winapi timer