如何知道一个线程是否在等待队列上

如果你没有源代码,那么除了通过查看它的callstack( k!sosex.mk!clrstack!eestack )之外,是否有办法告诉一个线程目前在等待队列中等待会发生什么情况,如等待接收I / O中断还是来自I / O完成端口的通知?

或者可能只是一个睡眠线程不等待任何东西,但仍然在等待队列中的一个?

为了testing,我做了一个小的C#程序,在这个程序中,我使线程睡了20秒。

 main() { Thread.Sleep(20000); } 

当我把Windbg附加到它的过程。 并检查其线程状态,睡眠线程报告线程状态0x202a020

 00:00> !threadstate 202a020 Legal to Join CoInitialized In Multi Threaded Apartment Fully initialized Interruptible 

我了解每一个国家的国旗,除了我不清楚最后一个,即可中断 。 我的猜测是, Interruptible标志只是表示线程可能被任何内核级中断中断,但不一定表明它在等待队列中。 即使是运行状态线程也可能被中断,对吧?

那么,是否有一种简单的方法来知道线程是否在等待队列中? 或者即使它已经准备就绪,但还没有运行?