我的线程是否在Ready Queue中?

时间:2011-08-08 16:45:59

标签: c# windows multithreading winapi

我需要记录特定线程在Ready Queue中的时间和持续时间。 我想知道是否有一种编程方式可以用C#来做到这一点。 如果您需要更多信息,请告诉我......

提前致谢, Rotem Varon。

2 个答案:

答案 0 :(得分:2)

您可以查看ThreadState对象的Thread属性。

请在此处查看可能的值:http://msdn.microsoft.com/en-us/library/system.threading.threadstate.aspx

WaitSleepJoin表示正在等待某事,Running表示据我所知,它在“就绪队列”中。希望有所帮助。

答案 1 :(得分:0)

有关线程内核状态的信息可在KTHREAD kernel structure中获得,可通过内核模式中的线程块访问。

问题是如何在用户模式下对其进行表面处理或将其暴露给程序?给定时间和技能的最佳解决方案可能是编写内核驱动程序。

或者你可以查看windows性能计数器,它可能已经为你做了。在任何情况下,您都必须采用相当不精确的轮询(当线程更改状态时,您不会收到通知)。

Win32_Thread WMI class可能对您有用,尤其是ExecutionState字段。