Pio*_*ost 47 io events nonblocking blocking
曾几何时我碰到了Indy的介绍文章,从那时起就不能停止考虑阻塞与非阻塞IO.
寻找一些好文章,描述阻止IO和非阻塞IO的优缺点,以及如何在每种情况下设计应用程序,以获得自然,易于理解和易于维护的代码.
想了解大图...
Goz*_*Goz 62
阻塞IO意味着给定的线程在完全接收到IO之前不能再执行任何操作(在套接字的情况下,这种等待可能需要很长时间).
非阻塞IO意味着IO请求立即排队,函数返回.然后,内核稍后会处理实际的IO.
对于阻止IO,您需要接受您将等待每个IO请求,或者您将需要为每个请求启动一个线程(这将非常快速地变得非常复杂).
对于非阻塞IO,您可以发送多个请求,但您需要记住,在某些"稍后"点之前,数据将无法使用.检查数据实际到达的可能是最复杂的部分.
在99%的应用程序中,您无需关心IO阻塞.但有时您需要额外的性能,允许自己发起IO请求,然后在返回之前执行其他操作,并希望找到IO请求已完成.
无论如何,只是我的tuppence.