每个Node.js应用有多less线程?

经常说Node.js应用程序是单线程的,但是总共有3个线程是由下面的命令产生的。 他们是什么?

$ node -e 'while (true) {}' & => <node_pid> $ ps huH p <node_pid> | wc -l => 3 

您编写的应用程序JavaScript代码是单线程的,因为Node使用callback来处理阻塞IO,然后通过单个事件循环来处理这些IO。 但是,所有这些都是由用C ++编写的底层平台,V8引擎以及用C编写的libuv库执行的。这两个组件不共享事件循环的约束,并且能够产生多个线程。