关于nodeJS的几个理论知识

clipboard.png
1.nodeJS是单线程,为什么每个API又可以作为一个独立线程运行?
2.最后一条具体怎么理解?

阅读 2.2k
3 个回答

推荐我之前写的一篇文章https://segmentfault.com/a/1190000005173218

  1. nodejs是事件驱动型的,事件驱动的观察者运行在单线程中,当调用异步函数的时候,该线程就会将这些函数任务布置下去,比如读取一个文件,监听某个端口,都会调用libuv库开启一个新的线程。但是并不是所有异步函数都会开启一个新的线程,可能只是简单的运行在单线程中。

  2. 单线程就是在一个whilte(true)里面检测事件队列有没有新的事件发生,比如文件读取结束了,或者是settimeout计时结束了,都会将一个事件推入到事件队列中,观察者每隔一段时间就去看看事件队列中有没有新的事件,有的话就会去暂停while(true)循环,然后调用回调函数执行,执行完毕后再开始while(true)循环

单线程是说,对于你写的的 js 代码来说,代码执行的"指针"只能会位于一个地方,第一个地方的语句执行完之前不可能无缘无辜跳到另一个地方执行。

异步是说,你调用某个 API 之后,这句代码立即返回,去执行你写代码的后面一句。但是 nodejs 后台会同时去执行你发出的这条指令。

最后一句说的是 nodejs 的实现原理,这个初学可以先不用关心。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏