网络应用需要处理的无非就是两大类问题,网络I/O,数据计算。相对于后者,网络I/O的延迟,给应用带来的性能瓶颈大于后者。
在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式:
既然异步IO优势这么明显,那在所有项目里面只使用这一种不就好了?什么情况下会考虑其他的几种IO模型呢?
执行顺序难预期,不利于人类理解,开发调试困难。调用端按a、b、c的顺序发出,在被调用端的返回最终计算结果可能是c、b、a。
我的有道云笔记. 详细讲解四种调用方式:阻塞、非阻塞、同步、异步