有没有办法在NodeJS中进行多线程编码?

Xi *_*ang 14 javascript multithreading node.js

根据我的理解,只有NodeJS中的I/O是非阻塞的.例如,如果我们执行大量繁重的数学运算,则其他用户在完成之前无法访问服务器.

我想知道在NodeJS中是否存在非阻塞方式来进行大量计算?只是好奇.

log*_*yth 9

如果您要对Node进行长时间运行的计算,则需要启动一个单独的进程来处理这些计算.通常,这可以通过创建一些单独的工作进程并将计算传递给它们来完成.通过这样做,您可以保持主节点事件循环不受阻挡.

在实现方面,您有两个主要选择.

  1. 第一种是使用Node的子进程API函数手动分离子进程.这个很好,因为你的计算甚至不必是javascript.运行计算的子进程甚至可能是C或其他东西.
  2. 或者,如果您搜索"worker",Web Worker规范有几个可通过NPM实现的实现.我不能说这些工作有多好,因为我没有使用过,但它们可能是要走的路.

更新

我现在选择一个.当前的子进程API支持以类似工作者的方式轻松地在进程之间发送消息和对象,因此没有理由使用单独的工作模块.