参考:
非阻塞式I/O模型、异步与事件驱动–关于NodeJs的思考
Apache和Nginx比较
几种 IO编程比较
首先需要区分一下异步、非阻塞式与事件驱动的定义。
异步:
从字面上来看即非同步(asynchronous/synchronous),发出请求后是否需要立即得到回复是异步与同步的工作模式的主要区别。在异步模式中,发出某个请求后不需要等待得到回复,直接return以便于继续后续工作,而同步模式则要求在请求后就得到回复,否则持续在函数内等待且不return进入后续操作。发邮件和打电话这两张联系方式很好的体现了异步与同步的区别,通常当我们发出一封邮件时并不需要立即获得对方的回复,而是继续做自己其它的事情,当对方收到邮件并回复之后再返回继续处理该邮件事宜。而打电话则不同于邮件,拨号后人们通常会持续等待对方接通电话,直到拨号超时挂断。本文提到的Node.js即是典型的异步编程,而HTTP请求即是常见的同步通讯,发出请求并立即获得回应。
非阻塞式:
非阻塞式通常是对于I/O操作而言的,意思就是当你请求一个系统调用的时候,不管收到什么结果函数都会立即返回,而不让线程进入休眠状态以等待I/O操作的完成。相反阻塞式I