我需要记录特定线程在Ready Queue中的时间和持续时间。 我想知道是否有一种编程方式可以用C#来做到这一点。 如果您需要更多信息,请告诉我......
提前致谢, Rotem Varon。
答案 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
字段。