在看《node.js入门经典》这本书的时候看到: 由于事件循环是以单一进程为基础的,所以为了确保高性能需要遵循以下原则: 1,函数必须快速返回。2,函数不得阻塞。3,长时间运行的操作必须移到另一个进程中去 但是之前在看《深入浅出node.js》的时候,说异步I/O在windows下是通过IOCP的线程池执行的,不管它是否阻塞I/O, 都不会影响到javascript线程的后续执行的,这和上面说的函数必须快速返回是不是矛盾啊? 求大神指点一下:为什么函数必须快速返回?
6 回复
@jiyinyiyong ,那本《node.js入门经典》应该是说在javascript的单线程中使用那些异步函数(就是非I/O的异步API)的时候应该做到这些原则,不然是会阻塞的。 但是对于异步I/O,按照《深入浅出node.js》是没有影响的。因为异步I/O在windows下是通过IOCP的线程池执行,执行的慢了,最多占用了线程,导致线程池中的线程不够用,然后别的异步I/O再那等待。