100

一度に複数のメソッドを実行するためのスレッドを作成する方法はありますか?

そうすれば、途中でいずれかのメソッドが失敗した場合、他のすべてのスレッドを強制終了する必要があります。

4

12 に答える 12

100

新しい回答: node.js にはネイティブでスレッドを使用する機能がありませんでしたが、この機能が追加されました。詳細については、 https://nodejs.org/api/worker_threads.htmlを参照してください。

古い答え: すべての node.js プロセスは、設計上シングル スレッドです。したがって、複数のスレッドを取得するには、複数のプロセスが必要です (他のポスターが指摘しているように、ノードでスレッドを操作する機能を提供するリンク可能なライブラリもありますが、それらのライブラリがなければそのような機能は存在しませんhttps://github.com/audreyt/node-webworker-threadsを参照している Shawn Vincent による回答を参照してください)

node.js ドキュメント ( http://nodejs.org/api/child_process.html ) に示されているように、メイン プロセスから子プロセスを開始できます 。このページの例は非常に優れており、非常に簡単です。

次に、親プロセスは、開始したプロセスの終了イベントを監視し、開始した他のプロセスを強制的に終了して、話しているワンフェイルオールストップ戦略のタイプを達成できます。

参照: マルチコア マシン上の Node.js

于 2013-09-04T12:02:32.890 に答える
34

また、Node.js 内からネイティブ スレッドを実行するためのライブラリが少なくとも 1 つあります: node-webworker-threads

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

これは基本的に、node.js 用のWeb Worker ブラウザー APIを実装します。

于 2014-03-23T16:54:59.540 に答える
4

Rx を使用している場合、rxjs-cluster にプラグインして作業を並列実行に分割するのはかなり簡単です。(免責事項:私は著者です)

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

于 2016-02-14T17:41:02.450 に答える
2

プロジェクトのステータスについてはわかりませんが、https://github.com/xk/node-threads-a-gogoもあります。

于 2015-02-19T05:44:27.997 に答える
2

NodeJS にはスレッドが含まれるようになりました (回答時の実験的機能として)。

于 2019-03-08T23:08:02.260 に答える
0

あなたが探しているかもしれないPromise.race(スレッドではなく、ネイティブの I/O レーシング ソリューション)

あなた(またはこの質問を検索している他の人)がスレッドを競合させて障害を回避し、I / O操作のコストを回避したいと仮定すると、これはそれを達成するためのシンプルでネイティブな方法です(スレッドを使用しません)。ノードはシングル スレッド (イベント ループを参照) になるように設計されているため、可能であればスレッドの使用を避けてください。私の仮定が正しければ、(リンクの例)で使用Promise.raceすることをお勧めします。setTimeoutこの戦略では、それぞれが何らかの I/O 操作を試行し、エラーが発生した場合 (そうでない場合はタイムアウト) に Promise を拒否する Promise のリストを競合させます。ステートメントは、最初の解決/拒否のPromise.race後に続きます。これは、あなたが望んでいるようです. これが誰かを助けることを願っています!

于 2017-01-15T05:33:08.073 に答える