問題タブ [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.
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 操作は、ワーカーよりも効率的である」と記載されています。
マルチスレッドまたはマルチプロセッシングなしで、このシナリオをどのように処理できるかわかりません。この場合、ワーカー スレッド ソリューションは実行可能でしょうか?
ご意見やご提案をいただければ幸いです。ありがとう!
node.js - ワーカー スレッドでノード http サーバーを使用できますか
cluster モジュールについては知っていますが、worker_threads について質問します。
コード例
このコードを Windows で実行すると、明らかなエラーが発生します
しかし、WSLではエラーなく動作します
しかし、ブラウザーでは、常に単一のワーカーからのみ応答を受け取ります。開始した順序によって異なります
ワーカー スレッドで単一の http ポートをリッスンできますか? はいの場合、このポートで負荷分散を行うにはどうすればよいですか? nodejsがWSLで同じポートをリッスンできるのはなぜですか?