NodeJS 深入浅出读后感(3)

第三章 异步I/O

为什么要异步I/O

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

资源分配

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

Node 异步I/O

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

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

非I/O的异步API

  • 定时器 setTimeout 和 setInterval


  • process.nextTick()
    顾名思义,在下一个Tick的时候执行
    相比定时器采用红黑树(操作时间复杂度O(lg(n))),nextTick()时间复杂度为O(1),更高效

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容