关于CLR在托管代码中创建的线程的状态,我有两个问题。
似乎没有线程状态来表示等待的线程 阻止的I / O操作。
例如等待磁盘驱动程序 响应从磁盘读取的字节流,或等待 网络端口,用于从另一个进程或到达的字节流 计算机。
为什么?或者如果不是这样的话,请你告诉我
ThreadState
枚举的哪个成员代表这一点
状态?
我最接近的是WaitSleepJoin
州,但是它
文档内容如下:
WaitSleepJoin
线程被阻止。这可能是调用Thread.Sleep或Thread.Join请求锁定的结果 - 例如,通过 调用Monitor.Enter或Monitor.Wait - 或等待线程 同步对象,如ManualResetEvent。
请从上面复制的文档摘录中获取 考虑这句话:
...请求锁定 - 例如,通过调用Monitor.Enter或Monitor.Wait
如果线程只是请求锁定,为什么会阻塞?是否
该文件实际上暗示,“在等待锁定时,
目前由另一个线程持有,在一个待发布的资源上。在
换句话说,在SpinWait
期间?换句话说,在等待当前锁的所有者发出脉冲时?“