Node实现的异步I/ONode实现的异步I/O

前端精髓

每日为你推送

Node实现的异步I/ONode实现的异步I/O


Node在*nix平台下自行实现了线程池来完成异步I/O。

采用线程池与阻塞I/O模拟异步I/O。

Node实现的异步I/O


在Windows平台下采用了IOCP实现异步I/O。Windows下的IOCP,它在某种程度上提供了理想的异步I/O:调用异步方法,等待I/O完成之后的通知,执行回调,用户无须考虑轮询。但是它的内部其实仍然是线程池原理,不同之处在于这些线程池由系统内核接手管理。


由于Windows平台和*nix平台的差异,Node提供了libuv作为抽象封装层,使得所有平台兼容性的判断都由这一层来完成,并保证上层的Node与下层的自定义线程池及IOCP之间各自独立。Node在编译期间会判断平台条件,选择性编译unix目录或是win目录下的源文件到目标程序中,其架构如图所示。


Node实现的异步I/O

另一个需要强调的地方在于我们时常提到Node是单线程的,这里的单线程仅仅只是JavaScript执行在单线程中罢了。在Node中,无论是*nix还是Windows平台,内部完成I/O任务的另有线程池。


Node实现的异步I/O

相关文章:

  • 2022-12-23
  • 2021-07-09
  • 2022-12-23
  • 2021-09-11
  • 2021-06-01
  • 2021-11-13
  • 2021-07-15
  • 2021-12-23
猜你喜欢
  • 2021-08-31
  • 2021-12-04
  • 2021-07-12
  • 2021-07-27
  • 2021-04-26
  • 2021-05-26
相关资源
相似解决方案