Node.js的异步I/O通过事件循环的方式实现。其中异步I/O又分磁盘I/O和网络I/O。在磁盘I/O的调用中,当发起异步调用后,会将异步操作送进libuv提供的队列中,然后返回。当磁盘I/O执行完成之后,会形成一个事件,事件循环的过程中发现该事件后,会将其消费。消费过程就是将得到的数据和传入的回调函数执行。
网络I/O与磁盘I/O的差异在于它不需要线程池来进行处理,而是在每次时间循环的过程中通过IOCP/epoll/kqueue/event ports来获取网络I/O的 事件队列。
摘自:《技术之瞳》
时间: 2024-10-22 11:39:35