この記事では主にノードのシングルスレッドの高同時実行性とノードの非同期 I/O の原理を紹介します。興味がある方はぜひ学んでください。
1. 高い同時実行性を実現するノードのシングルスレッド実装の原則
ご存知のとおり、nodejs は高い同時実行性をサポートするシングルスレッドのスクリプト言語です。しかし、なぜシングルスレッドのnodejsが高い同時実行性をサポートできるのでしょうか?多くの人はその原理を理解していません。以下に私の理解を話させてください:
1. ノードの利点: ノードの I/O リクエストはすべて非同期であるため、I/O 集約的な処理がノードの強みです。例: SQL クエリ リクエスト、ファイル ストリーム操作リクエスト、http リクエスト...)
a. 非同期とは何ですか?
非同期: 操作コマンドを発行すると、すべての操作が完了すると、コールバックが実行されます。
// 第一步:定义变量 let a = 1; // 第二步:发出指令,然后把回调函数加入异步队列(回调函数并没有执行) setTimeout(() => { console.log(a); }, 0) // 第三步:赋值,回调函数没有执行 a = 2; // 第四步:发出指令,然后把回调函数加入异步队列(回调函数并没有执行) setTimeout(() => { console.log(a); }, 0) // 第五步:赋值,回调函数没有执行 a = 3; // 当所有代码执行完毕,cpu空闲下来了,就会开始执行异步队列里面的回调函数 // 所以最后控制台输出:3 3
b. 非同期 I/O とは何ですか?
その名前が示すように、非同期 I/O は I/O リクエストを非同期に発行することです
c.nodejs は I/O リクエストを非同期に発行できますが、なぜ高い同時実行性をサポートできないのですか?
nodejsのI/O操作により、最下層でマルチスレッドが有効になります
同時に複数のIOリクエストがある場合、メインスレッドは複数のeioスレッドを作成してIOリクエストの処理速度を向上させます
追加の知識ポイント:
d.nodejs の I/O 操作はマルチスレッドを有効にしますが、すべてのスレッドはメインスレッドに基づいて開始され、1 つのプロセスでのみ実行できるため、CPU リソースを完全に活用することはできません。
pm2プロセスマネージャーはこの問題を解決できますpm2はロードバランシング機能を備えたNodeアプリケーション用のプロセスマネージャーですe CPUコア数とスレッドの関係 過去のシングルCPU時代では、シングルタスクでした。ある時点では単一のプログラムしか実行できません。その後、コンピューターが同時に複数のタスクやプロセスを並行して実行できるマルチタスク段階に発展しました。本当の意味での「同じ時点」ではありませんが、複数のタスクまたはプロセスが CPU を共有し、複数のタスク間での CPU の実行切り替えを完了するのはオペレーティング システムに任されているため、各タスクは特定の特典を得る機会がタイムスライスで実行されます。マルチコア CPU を使用すると、複数のタスクを同時に実行できます。このタスクが実行される特定の CPU コアは、オペレーティング システムと CPU 自体の設計に関係します。 2. ノードの欠点: 欠点。 CPU を使用する操作
a. CPU を使用する操作 (複雑な操作、画像操作) とは
// 这就是一个cpu密集型的操作 for (let i = 0; i < 1000000; i++) { console.log(i); }b. なぜ、nodejs は CPU を使用する操作が苦手なのか、なぜなら、nodejs はシングルスレッドだからです
関連する推奨事項:
シングルスレッドの JS 実行の問題の詳細な説明
以上がノードシングルスレッドにより高い同時実行性原理を実現の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

node、nvm与npm的区别:1、nodejs是项目开发时所需要的代码库,nvm是nodejs版本管理工具,npm是nodejs包管理工具;2、nodejs能够使得javascript能够脱离浏览器运行,nvm能够管理nodejs和npm的版本,npm能够管理nodejs的第三方插件。

Vercel是什么?本篇文章带大家了解一下Vercel,并介绍一下在Vercel中部署 Node 服务的方法,希望对大家有所帮助!

node怎么爬取数据?下面本篇文章给大家分享一个node爬虫实例,聊聊利用node抓取小说章节的方法,希望对大家有所帮助!

node导出模块的两种方式:1、利用exports,该方法可以通过添加属性的方式导出,并且可以导出多个成员;2、利用“module.exports”,该方法可以直接通过为“module.exports”赋值的方式导出模块,只能导出单个成员。

安装node时会自动安装npm;npm是nodejs平台默认的包管理工具,新版本的nodejs已经集成了npm,所以npm会随同nodejs一起安装,安装完成后可以利用“npm -v”命令查看是否安装成功。

node中没有包含dom和bom;bom是指浏览器对象模型,bom是指文档对象模型,而node中采用ecmascript进行编码,并且没有浏览器也没有文档,是JavaScript运行在后端的环境平台,因此node中没有包含dom和bom。

本篇文章带大家聊聊Node.js中的path模块,介绍一下path的常见使用场景、执行机制,以及常用工具函数,希望对大家有所帮助!


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

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

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境
