2.6 单线程和多线程

当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源。而一个进程又是由多个线程所组成的。线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务。也就是说,允许单个程序创建多个并行执行的线程来完成各自的任务。多线程可以提高CPU的利用率。在多线程程序中,一个线程必须等待的时候,CPU可以运行其他的线程而不是等待,这样就大大提高了程序的效率。

Node.js是单线程的指的是JavaScript的执行是单线程的,但JavaScript的宿主环境,无论是Node还是浏览器都是多线程的。Node.js基于V8引擎,所以它本身并不支持多线程,但是为了充分利用Server的Multi-Core,必须使用多进程的方式。

Node.js与进程相关的模块有process、child_process、cluster,其中cluster用于方便地创建共享端口的多进程模式。