我的线程在就绪队列中吗?

本文关键字:队列 就绪 线程 我的 | 更新日期: 2023-09-27 18:04:45

我需要记录特定线程在就绪队列中的时间和时间。我想知道是否有一种用c#编程的方式来做到这一点。如果你需要更多的信息,请告诉我。

提前感谢,Rotem瓦伦而言。

我的线程在就绪队列中吗?

可以查看Thread对象的ThreadState属性

查看这里可能的值:http://msdn.microsoft.com/en-us/library/system.threading.threadstate.aspx

WaitSleepJoin表示正在等待某事,Running表示据我所知它在"就绪队列"中。

关于线程的内核状态的信息可以在KTHREAD内核结构中获得,可以通过内核模式下的线程块访问。

问题是如何在用户模式下显示它或将它暴露给程序?考虑到时间和技能,最好的解决方案可能是编写一个内核驱动程序。

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

Win32_Thread WMI类可能对你有用,特别是ExecutionState字段。