我的线程在就绪队列中吗?
本文关键字:队列 就绪 线程 我的 | 更新日期: 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
字段。