1

对于某些 RTOS,有一些事件,甚至是在内核切换到甚至切换出线程时调用的标注函数。在 pSOS 中,它被称为 TaskSwitchCallout。在这种情况下,我们将有代码来增加计数器,从而我们知道线程占用了多少 CPU 时间。在 Qnx 中,您可以订阅在内核切换到任务时发生的事件并执行相同的计数器增量。

Windows中是否有等价物?通常在 Windows 下,我们无法确定相对于系统中运行的其他线程(阅读:托管代码)何时准确地切换了线程上下文。

请不要问我为什么要这样做,我不能谈论它。但是我可以说 Windows perfmon 中的上下文切换计数器是不够的。但我认为 perfmon 中的上下文切换计数器必须从某个地方获取它的信息......我试图在每个线程的基础上访问某个地方。

谢谢!!

4

1 回答 1

1

Windows 不会通知线程上下文切换。

如果您需要计时信息,请使用GetThreadTimesQueryThreadCycleTime或性能计数器之一。

或者,您可以使用 Windows 7 用户模式调度程序,因此您负责上下文切换:用户模式调度

于 2011-02-08T14:18:51.437 回答