NodeJS 深入浅出读后感(3)

第三章 异步I/O

为什么要异步I/O

  • 为了不影响用户体验
  • 为了应对分布式处理

资源分配

处理一组不相关的任务有两种方式:单线程,多线程,但是他们都有一些问题。
Node采用单线程,远离多线程死锁,状态同步等问题;利用异步I/O,让单线程远离阻塞

Node 异步I/O

Node的执行模型是一个事件循环,每执行一次循环称为一次Tick

NodeJS 深入浅出读后感(3)_第1张图片

异步I/O的过程是先请求对象,送入I/O线程池,然后执行回调

NodeJS 深入浅出读后感(3)_第2张图片

非I/O的异步API

  • 定时器 setTimeout 和 setInterval


    NodeJS 深入浅出读后感(3)_第3张图片
  • process.nextTick()
    顾名思义,在下一个Tick的时候执行
    相比定时器采用红黑树(操作时间复杂度O(lg(n))),nextTick()时间复杂度为O(1),更高效

  • setImmediate()
    与nextTick()十分类似,但是比nextTick()慢一点

事件驱动会使服务器十分高效

你可能感兴趣的:(NodeJS 深入浅出读后感(3))