你如何解释一个关于阻塞IO和非阻塞IO的简单的凡人?我发现这些概念在我们许多程序员中并不是很清楚。
发布于 2009-09-26 08:04:34
阻塞I/O意味着当I/O正在进行时,程序的执行被搁置。所以程序会等待,直到I/O完成,然后继续执行。在非阻塞I/O中,程序可以在I/O操作期间继续。
发布于 2009-09-26 08:11:30
这是一个并发问题。在正常情况下,在OS内核从用户程序接收到I/O操作之后,该程序不会再次运行,直到I/O操作完成。其他程序通常会在此期间进行调度。
这解决了很多小问题。例如,除非在read(2)返回时I/O已完成,否则程序如何知道读取了多少字节?当write(2)返回时,如果操作仍在进行中,它如何知道是否可以重用write(2)缓冲区?显然,真正的异步I/O需要更复杂的接口。
最终归结为:
此外,当I/O可能只阻塞一个线程时,调度多线程程序的努力使整个问题变得复杂,但这是另一个问题……
发布于 2009-09-26 08:04:51
简单地说..非阻塞i/o (异步)允许其他操作在它做自己的事情时被执行,而阻塞i/o会阻塞其他操作
https://stackoverflow.com/questions/1480722
复制相似问题