問題タブ [node-worker-threads]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
509 参照

javascript - JS (Node.js) で複数の長時間実行タスクを同時に管理する

JS (Node.js) を学ぼうとしている Golang 開発者です。

私は Go で goroutines を扱うことに慣れています。簡単にするために、これは単なるスレッドであると仮定しましょう (実際には、それらは正確にはスレッドではなく、Green Threadsに似ていますが、我慢してください!)。

endlessTaskたとえば、Websocket からデータを受信し、後で照会できる内部状態を更新し続ける関数などを実行できる、ある種のサービスを作成したいとします。今、私は同時に複数のユーザーにサービスを提供できるようにしたいと考えており、各ユーザーは特定の進行中のタスクをある時点で停止することもできます。Go では、自分の の goroutine を生成endlessTaskし、リクエスト ディスパッチャーにある種のセッションを保存して、各タスクがどのユーザーに属しているかを追跡することができます。

JSでこのようなものを実装するにはどうすればよいですか? Node.js API ドキュメントを調べたところ、興味深いことがいくつか見つかりました。

  • クラスター: 私が探しているものとはまったく違うようです
  • 子プロセス: 動作する可能性がありますが、クライアント/ユーザーごとに 1 つのプロセスを生成し、オーバーヘッドが非常に大きくなると思います
  • ワーカー スレッド: より似ていますが、ドキュメントには、「CPU を集中的に使用する JavaScript 操作を実行するのに役立つ」および「Node.js 組み込みの非同期 I/O 操作は、ワーカーよりも効率的である」と記載されています。

マルチスレッドまたはマルチプロセッシングなしで、このシナリオをどのように処理できるかわかりません。この場合、ワーカー スレッド ソリューションは実行可能でしょうか?

ご意見やご提案をいただければ幸いです。ありがとう!

0 投票する
1 に答える
530 参照

node.js - ワーカー スレッドでノード http サーバーを使用できますか

cluster モジュールについては知っていますが、worker_threads について質問します。

コード例

このコードを Windows で実行すると、明らかなエラーが発生します

しかし、WSLではエラーなく動作します

しかし、ブラウザーでは、常に単一のワーカーからのみ応答を受け取ります。開始した順序によって異なります

ワーカー スレッドで単一の http ポートをリッスンできますか? はいの場合、このポートで負荷分散を行うにはどうすればよいですか? nodejsがWSLで同じポートをリッスンできるのはなぜですか?