Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
假设我有一个 C# 线程做一些阻塞 IO 并等待它完成。现在操作系统调度程序给它 CPU 时间。它会立即归还,还是只会被线程无所事事地使用?或者也许完全不同?
在 Windows 上,阻塞 IO 到任何设备(可通过文件系统接口或其他设备访问)通过将 IO 请求发送到与设备关联的驱动程序以及事件对象的句柄来工作,然后通过等待来阻塞调用线程事件对象。(当驱动程序完成 IO 时,将发出事件信号)。因此,当线程阻塞 IO 时,它不会占用 CPU,因为它只是在等待事件句柄。
所有阻塞 IO API(s) 都以这种方式工作,在实现上可能存在细微差别。