真的是NodeJS单线程还是多线程?

时间:2018-10-04 12:07:41

标签: node.js

关于stackoverflow和其他网站的许多问题,有人说NodeJS是Singlethread,有人说NodeJS是Multithread,他们有自己的逻辑是Singlethread或{{1} }。但是如果采访者提出同样的问题。我应该说什么。我在这里感到困惑。

3 个答案:

答案 0 :(得分:5)

NodeJ中主要的event loopsingle-threaded,但是大多数I/O工作是在单独的线程上运行的。 您可以通过创建子进程来使其multi-threaded。 有一个npm模块napajs用于创建多线程javascript运行时。

但是,10.5.0版本宣布了Node.js中的多线程。该功能仍为experimental,并且可能会进行广泛的更改,但它确实显示了NodeJ前进的方向。

敬请期待!

答案 1 :(得分:3)

NodeJS在单线程环境中运行JavaScript。 可以使用单个线程(除非使用worker_threads模块和生成进程)。

在幕后,NodeJS使用libuv,它以事件循环的形式将OS线程用于异步I / O。

答案 2 :(得分:0)

在一个单词节点中,Single-thread是一个Multithread,而行为是libuv,因为OS使用Multithread个线程,所以操作系统是singlethread

对于这种行为,有人说Node是多线程的,实际上就是这样。

如果有人告诉我说一个字,我会说ps_product_shop