3

假设我有一个 C# 线程做一些阻塞 IO 并等待它完成。现在操作系统调度程序给它 CPU 时间。它会立即归还,还是只会被线程无所事事地使用?或者也许完全不同?

4

1 回答 1

6

在 Windows 上,阻塞 IO 到任何设备(可通过文件系统接口或其他设备访问)通过将 IO 请求发送到与设备关联的驱动程序以及事件对象的句柄来工作,然后通过等待来阻塞调用线程事件对象。(当驱动程序完成 IO 时,将发出事件信号)。因此,当线程阻塞 IO 时,它不会占用 CPU,因为它只是在等待事件句柄。

所有阻塞 IO API(s) 都以这种方式工作,在实现上可能存在细微差别。

于 2012-11-28T11:27:27.100 回答