目次
ノードでマルチスレッドを有効にできますか?
複数のプロセスを使用する
express
ホームページ ウェブフロントエンド フロントエンドQ&A ノードでマルチスレッドを有効にできますか?

ノードでマルチスレッドを有効にできますか?

Jun 15, 2022 pm 05:06 PM
node

ノードはマルチスレッドを有効にできます。ノードに付属の「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-dev

extensionServer.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  { 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,
};
ログイン後にコピー

サービスを開始します。この時点で、メイン サービスは両方とも

ノードでマルチスレッドを有効にできますか?

Express のメイン サービスとサブサービスのアドレスに正常にアクセスできます

cluster .js 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(&#39;disconnect&#39;, (worker) => {
	    console.log(`进程号 #${worker.id} 已断开`);
	  });
	// 意外退出进程
	cluster.on(&#39;exit&#39;, (worker, code, signal) => {
	      cluster.fork();
  	});


} else
{
	// 引用Express主服务 开启主进程  
  require(&#39;./server&#39;)
}
ログイン後にコピー

クラスターサービスノードクラスターを開始します

もちろん、引き続き子プロセスを開くこともできます。クラスター

2 回目の訪問後のインターフェイス (1 回のブラウザー訪問、1 回の Postman 訪問)


ノードでマルチスレッドを有効にできますか?

なぜ複数あるのですか

サーバーは正常に開始され、現在のサービス プロセスid は xxx

は、現在のメイン プロセスの下にサブプロセスを生成するクラスター モジュールである必要があります。各サブプロセスは、メイン プロセスのすべての

に基づく新しいプロセスです。プロセスは互いに独立しています。各プロセスには独自の V8 インスタンスとメモリがあり、システム リソースは限られています。子プロセスをあまりにも多く生成することはお勧めできません。一般的な設定はシステム *
の数に基づいています。 CPUコア数*

メインプロセスの有無を事前に判定しています

メインプロセスがある場合は、クラスタモジュールを使用して子プロセスを開きます

そうでない場合は、プロセスを開きます。

Express サービスをデフォルトの http サービスに変更します。

server.js ファイルの内容を変更するだけです。

const http = require(&#39;http&#39;)const { pid, ppid } = require(&#39;process&#39;)const server = http.createServer((req, res) => {
  res.end(router(req.url))})const router = (url) => {
  switch (url)
  {
    case &#39;/132&#39;:
      return `进程${pid} 很高兴为你服务`;
    case &#39;/456&#39;:
      return `进程${pid} 很高兴为你服务`;
    default: return `没有此接口`
  }}server.listen(3889, () => {
  console.log(`Server Started in process ${pid}`);})
ログイン後にコピー
引き続きクラスターを開始します。 .js (マルチスレッド サービス ファイル)


ノードでマルチスレッドを有効にできますか?

推奨学習:「

nodejs ビデオ チュートリアル>>

以上がノードでマルチスレッドを有効にできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

nvmでノードを削除する方法 nvmでノードを削除する方法 Dec 29, 2022 am 10:07 AM

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

Express を使用してノード プロジェクトでファイルのアップロードを処理する方法 Express を使用してノード プロジェクトでファイルのアップロードを処理する方法 Mar 28, 2023 pm 07:28 PM

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

NodeサービスのDockerミラーリングを行うにはどうすればよいですか?極限最適化の詳しい説明 NodeサービスのDockerミラーリングを行うにはどうすればよいですか?極限最適化の詳しい説明 Oct 19, 2022 pm 07:38 PM

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

Nodeのプロセス管理ツール「pm2」を徹底分析 Nodeのプロセス管理ツール「pm2」を徹底分析 Apr 03, 2023 pm 06:02 PM

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

PIノードティーチング:PIノードとは何ですか? PIノードをインストールしてセットアップする方法は? PIノードティーチング:PIノードとは何ですか? PIノードをインストールしてセットアップする方法は? Mar 05, 2025 pm 05:57 PM

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

pkg を使用して Node.js プロジェクトを実行可能ファイルにパッケージ化する方法について説明します。 pkg を使用して Node.js プロジェクトを実行可能ファイルにパッケージ化する方法について説明します。 Dec 02, 2022 pm 09:06 PM

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

npm ノード gyp が失敗した場合の対処方法 npm ノード gyp が失敗した場合の対処方法 Dec 29, 2022 pm 02:42 PM

「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」バージョンをインストールします。

Angular と Node を使用したトークンベースの認証 Angular と Node を使用したトークンベースの認証 Sep 01, 2023 pm 02:01 PM

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

See all articles