我正试图理解NodeJS中的线程(Threading)及其工作原理。
目前我所了解的:
Cluster: -
- 基于Child_process,但使用TCP分布在集群之间。
- 最适合用于分发/平衡传入的http请求,但不适用于CPU密集型任务。
- 通过在其他核心上克隆NodeJS Web服务器实例,利用CPU中可用的核心来工作。
Child_process:
也利用可用的不同核心,但不好的是由于创建虚拟内存而花费巨大的资源成本来分叉子进程。
分叉的进程可以通过事件与主线程通信,反之亦然,但分叉的进程之间没有通信。
Worker threads:
- 与 Child process 相同,但分叉的进程可以使用
bufferArray
进行通信。
1) 为什么worker threads
比child process
更好,并且我们应该在什么时候使用它们?
2) 如果我们有4个核心并将NodeJS Web服务器集群/分叉4次(每个核心1个进程),然后我们使用了worker threads
(没有可用的核心)会发生什么?