如何在nodejs中创build线程

有什么办法可以创build线程一次运行多个方法。 如果任何方法在所有其他线程之间失败应该被杀死。
提前致谢

每个node.js进程都是单线程的。 因此,为了获得多个线程,你必须有多个进程(正如其他一些海报所指出的那样,也有一些库可以链接到,这将使你能够使用Node中的线程,但是没有这些库见Shawn Vincent参考https://github.com/audreyt/node-webworker-threads

您可以从您的主进程启动subprocess,如node.js文档中所示: http : //nodejs.org/api/child_process.html 。 这个例子在这个页面上很不错,而且非常简单。

然后你的父进程可以监视它开始的任何进程的closures事件,然后可以强制closures其他进程,你开始实现你所谈论的一种失败的所有停止策略。

另请参阅: 多核机器上的Node.js

在Node.js中至less还有一个用于执行本地线程的库:node-webworker-threads

https://github.com/audreyt/node-webworker-threads

这基本上实现了Node.js的Web Worker浏览器API 。

现在也有https://github.com/xk/node-threads-a-gogo ,虽然我不确定项目状态。

如果您使用的是Rx,那么在rxjs-cluster中插入将工作分解为并行执行相当简单。 (免责声明:我是作者)

https://www.npmjs.com/package/rxjs-cluster

您可能正在寻找Promise.race (本地I / O赛车解决scheme,而不是线程)

假设你(或其他人在search这个问题)想要争夺线程以避免失败并避免I / O操作的成本,这是一个简单而本地的方式来完成它(不使用线程)。 节点被devise成单线程(查找事件循环),所以尽可能避免使用线程。 如果我的假设是正确的,我build议你用setTimeout使用Promise.race (例如在链接中)。 通过这个策略,你可以竞争一个promise列表,每个尝试一些I / O操作,如果有错误(否则超时),拒绝承诺。 Promise.race声明在第一次解决/拒绝之后继续,这似乎是你想要的。 希望这可以帮助别人!

你可以使用Napa.js获得multithreading。

https://github.com/Microsoft/napajs

“Napa.js是一个基于V8的multithreadingJavaScript运行库,最初devise的目的是为了开发高度迭代的服务,在Bing中性能不受影响。随着它的发展,我们发现补充Node.js在CPU绑定任务,能够在多个V8隔离中执行JavaScript并在它们之间进行通信,Napa.js作为Node.js模块公开,也可以embedded到宿主进程中,而不依赖于Node.js。