ノードでマルチスレッドを有効にできますか?
ノードはマルチスレッドを有効にできます。ノードに付属の「child_process」モジュールを使用してマルチスレッドを有効にできます。構文は「child_process.fork(modulePath[, args][, options])」です。 ; このモジュールを使用すると、exec、execFile、spawn、fork の 4 種類の子プロセスを作成できます。
このチュートリアルの動作環境: Windows10 システム、nodejs バージョン 12.19.0、Dell G3 コンピューター。
ノードでマルチスレッドを有効にできますか?
ノードでマルチスレッドを有効にできますか?
Node.js がシングルスレッドで実行されることは誰もが知っています。イベント駆動型のノンブロッキング I/O モデルに基づいて、オペレーティング システムが提供する非同期 I/O を最大限に活用してマルチタスクを実行します。非同期なので、プログラムは結果が返されるのを待ってブロックする必要がないため、I/O 集中型のアプリケーション シナリオに適しています。
NodeJS マルチスレッドの出現は同時実行性を向上させるためではなく、CPU を完全に向上させるためです。使用法
マルチスレッドを開くためのいくつかの方法
Node に付属する child_process モジュールを使用します
child_process.fork(modulePath[, args][, options])
新しい Node.js プロセスを生成し、確立された IPC 通信チャネルを使用します (これにより、親プロセスと子プロセスの間でメッセージを送信できるようになります) を使用して、指定されたモジュールを呼び出すことができます
cluster クラスター モジュールは、サーバー ポートを共有する子プロセスを簡単に作成できます。 child_process.fork() メソッド
複数のプロセスを使用する
express
3 つの新しいファイル server.js (エクスプレス サービス) クラスターを作成します。 js (マルチスレッド サービス ファイル) extensionServer.js (express サブサービス)
次の操作により、express がインストールされていることを確認します
#npm intsall Express --seve-devextensionServer.js Express を使用してサブサービスを作成します
const express = require("express"), //Express框架
app = express();
// api 先关接口
app.all('/userinfo', (req, res) => {
res.json({ name: '自夏', msg: '我在自夏 selfsummer' })
})
app.listen(4000, () => {
console.log(`子服务启动成功`);
})
ログイン後にコピー
serve.js まず、Express マルチスレッド サービスを作成しますconst express = require("express"), //Express框架 app = express(); // api 先关接口 app.all('/userinfo', (req, res) => { res.json({ name: '自夏', msg: '我在自夏 selfsummer' }) }) app.listen(4000, () => { console.log(`子服务启动成功`); })
const { fork } = require("child_process"),
express = require("express"), //Express框架
app = express();
const { pid, ppid } = require('process')
// api 先关接口
app.all('/123', (req, res, next) => {
console.log(`本次进程id为: ${pid}`);
res.end(`本次进程id为: ${pid}`)
})
app.all('/456', (req, res, next) => {
console.log(`本次进程id为: ${pid}`);
res.end(`本次进程id为: ${pid}`)
})
app.listen(3888, () => {
console.log(`服务器端启动成功 父进程 ${ppid} 当前服务进程id为 ${pid}`);
// 开启多进程
fork('extensionServer.js')
})
module.exports = {
app,
express,
};
ログイン後にコピー
サービスを開始します。この時点で、メイン サービスは両方ともconst { fork } = require("child_process"), express = require("express"), //Express框架 app = express(); const { pid, ppid } = require('process') // api 先关接口 app.all('/123', (req, res, next) => { console.log(`本次进程id为: ${pid}`); res.end(`本次进程id为: ${pid}`) }) app.all('/456', (req, res, next) => { console.log(`本次进程id为: ${pid}`); res.end(`本次进程id为: ${pid}`) }) app.listen(3888, () => { console.log(`服务器端启动成功 父进程 ${ppid} 当前服务进程id为 ${pid}`); // 开启多进程 fork('extensionServer.js') }) module.exports = { app, express, };
const os = require('os'); const cluster = require('cluster'); const { log } = console; const express = require("express"); //Express框架 const app = express(); const processId = process.pid; // 判断当前是否有主进程 if (cluster.isMaster) { // 获取当前本机cpu核数,开启多线程 const cpus = os.cpus().length; for (let i = 0; i < cpus; i++){ cluster.fork() } //进程已断开连接 cluster.on('disconnect', (worker) => { console.log(`进程号 #${worker.id} 已断开`); }); // 意外退出进程 cluster.on('exit', (worker, code, signal) => { cluster.fork(); }); } else { // 引用Express主服务 开启主进程 require('./server') }
サーバーは正常に開始され、現在のサービス プロセスid は xxx
は、現在のメイン プロセスの下にサブプロセスを生成するクラスター モジュールである必要があります。各サブプロセスは、メイン プロセスのすべてのメインプロセスの有無を事前に判定していますメインプロセスがある場合は、クラスタモジュールを使用して子プロセスを開きますそうでない場合は、プロセスを開きます。Express サービスをデフォルトの http サービスに変更します。server.js ファイルの内容を変更するだけです。に基づく新しいプロセスです。プロセスは互いに独立しています。各プロセスには独自の V8 インスタンスとメモリがあり、システム リソースは限られています。子プロセスをあまりにも多く生成することはお勧めできません。一般的な設定はシステム *
の数に基づいています。 CPUコア数*
const http = require('http')const { pid, ppid } = require('process')const server = http.createServer((req, res) => { res.end(router(req.url))})const router = (url) => { switch (url) { case '/132': return `进程${pid} 很高兴为你服务`; case '/456': return `进程${pid} 很高兴为你服务`; default: return `没有此接口` }}server.listen(3889, () => { console.log(`Server Started in process ${pid}`);})
nodejs ビデオ チュートリアル>>
以上がノードでマルチスレッドを有効にできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









nvm でノードを削除する方法: 1. 「nvm-setup.zip」をダウンロードして C ドライブにインストールします; 2. 「nvm -v」コマンドで環境変数を構成し、バージョン番号を確認します; 3. 「nvm」を使用しますinstall" コマンド ノードのインストール; 4. "nvm uninstall" コマンドでインストールしたノードを削除します。

ファイルのアップロードをどのように処理するか?次の記事では、Express を使用してノード プロジェクトでファイルのアップロードを処理する方法を紹介します。

この期間中、私は Tencent ドキュメントのすべてのカテゴリに共通する HTML 動的サービスを開発していましたが、さまざまなカテゴリへのアクセスの生成と展開を容易にし、クラウド移行のトレンドに従うために、Docker を使用して修正することを検討しました。サービス内容や製品バージョンを一元管理します。この記事では、私が Docker を提供するプロセスで蓄積した最適化の経験を参考として共有します。

この記事では、Node のプロセス管理ツール「pm2」について説明し、pm2 が必要な理由、pm2 のインストール方法と使用方法について説明します。皆様のお役に立てれば幸いです。

ピン張りのノードの詳細な説明とインストールガイドこの記事では、ピネットワークのエコシステムを詳細に紹介します - PIノードは、ピン系生態系における重要な役割であり、設置と構成の完全な手順を提供します。 Pinetworkブロックチェーンテストネットワークの発売後、PIノードは多くの先駆者の重要な部分になり、テストに積極的に参加し、今後のメインネットワークリリースの準備をしています。まだピン張りのものがわからない場合は、ピコインとは何かを参照してください。リストの価格はいくらですか? PIの使用、マイニング、セキュリティ分析。パインワークとは何ですか?ピン競技プロジェクトは2019年に開始され、独占的な暗号通貨PIコインを所有しています。このプロジェクトは、誰もが参加できるものを作成することを目指しています

Nodejs実行可能ファイルをpkgでパッケージ化するにはどうすればよいですか?次の記事では、pkg を使用して Node プロジェクトを実行可能ファイルにパッケージ化する方法を紹介します。

「node-gyp.js」が「Node.js」のバージョンと一致しないため、npm node gyp が失敗します。解決策は次のとおりです: 1. 「npm cache clean -f」を使用してノード キャッシュをクリアします; 2. 「npm install -」を使用します。 g n" n モジュールをインストールします。 3. 「n v12.21.0」コマンドを使用して、「node v12.21.0」バージョンをインストールします。

認証は、Web アプリケーションの最も重要な部分の 1 つです。このチュートリアルでは、トークンベースの認証システムと、それが従来のログイン システムとどのように異なるかについて説明します。このチュートリアルを終えると、Angular と Node.js で書かれた完全に動作するデモが表示されます。従来の認証システム トークンベースの認証システムに進む前に、従来の認証システムを見てみましょう。ユーザーはログイン フォームにユーザー名とパスワードを入力し、[ログイン] をクリックします。リクエストを行った後、データベースにクエリを実行してバックエンドでユーザーを認証します。リクエストが有効な場合、データベースから取得したユーザー情報を使用してセッションが作成され、セッション情報が応答ヘッダーで返され、セッション ID がブラウザに保存されます。対象となるアプリケーションへのアクセスを提供します。
