この記事では、Nodejs がどのようにマルチスレッド処理を行うのかを紹介します。一定の参考値があるので、困っている友達が参考になれば幸いです。
Threads à gogo は、nodejs のネイティブ モジュールであり、このモジュールを使用すると、nodejs にマルチスレッド処理機能を持たせることができます。 [推奨学習: "nodejs チュートリアル "]
インストール方法
npm install threads_a_gogo
テスト ソース コードのダウンロード
git clone http://github.com/xk/node-threads-a-gogo.git
モジュール コードのインポート
var tagg= require('threads_a_gogo');
API
tagg= require('threads_a_gogo') //生成tagg object var thread = tagg.create( /* no arguments */ ) //生成 thread object var thread_pool = tagg.createPool( numberOfThreads ) //生成 thread pool thread.load("boot.js").eval("boot()").emit("go").on("event", cb) //thread读取boot.js文件 执行boot(),发送event go,并且监听 event 事件 cb(err,result) thread_pool.load('path') //pool中的任意(.all 为全部)thread 读取path file pool.any.eval( program, cb ) //pool中的任意(.all 为全部)thread执行program
マルチスレッドを使用する理由
1. 並列実行、キュー不要、高速。
2. 公平性を保つため、すべてのスレッドは同じ優先度を持ちます。
3. リソースを最大限に活用し、より多くの CPU がタスク処理に参加できるようにします。
4. すべてのスレッドはストレージ アドレスを共有します。
例
まず簡単なテストを行い、フィボナッチ配列を使用してそれを確認し、マルチスレッド ノードを追加してみましょう。それは:(テスト マシンは 4CPU です)TAGG を通常に使用しないと、非同期は CPU を大量に使用するタスクを処理するのに役立ちません。
function fibo (n) { return n > 1 ? fibo(n - 1) + fibo(n - 2) : 1; } var n=8 function back(){ if(!--n) return console.timeEnd('no thread'); } console.time('no thread'); process.nextTick(function(){ console.log(fibo (40)); back(); }) process.nextTick(function(){ console.log(fibo (40)); back(); }) process.nextTick(function(){ console.log(fibo (40)); back(); }) process.nextTick(function(){ console.log(fibo (40)); back(); }) process.nextTick(function(){ console.log(fibo (40)); back(); }) process.nextTick(function(){ console.log(fibo (40)); back(); }) process.nextTick(function(){ console.log(fibo (40)); back(); }) process.nextTick(function(){ console.log(fibo (40)); back(); })
node v0 をテストするために、##8 の非同期動作をシミュレートしました。 8.16 バージョンでは、process.nextTick はまだ非同期メソッドです。最後に、出力結果は次のようになります:
165580141 165580141 165580141 165580141 165580141 165580141 165580141 165580141 no thread: 23346ms次に、TAGG モジュールを使用して、8 つのフィボナッチ配列計算の同じ実行をテストし、結果がどうなるかを確認します。
function fibo (n) { return n > 1 ? fibo(n - 1) + fibo(n - 2) : 1; } console.time('8 thread'); var numThreads= 8; //创建线程池,最大数为8 var threadPool= require('threads_a_gogo').createPool(numThreads).all.eval(fibo); //为线程池注册程序 var i=8; var cb = function(err,data){ //注册线程执行完毕的回调函数 console.log(data); if(!--i){ threadPool.destroy(); console.timeEnd('8 thread'); } } threadPool.any.eval('fibo(40)', cb); //开始向线程池中执行fibo(40)这个任务 threadPool.any.eval('fibo(40)', cb); threadPool.any.eval('fibo(40)', cb); threadPool.any.eval('fibo(40)', cb); threadPool.any.eval('fibo(40)', cb); threadPool.any.eval('fibo(40)', cb); threadPool.any.eval('fibo(40)', cb); threadPool.any.eval('fibo(40)', cb);最も重要な結果:
165580141 165580141 165580141 165580141 165580141 165580141 165580141 165580141 8 thread: 9510msマルチスレッド モデルを使用しないノードと比較して、TAGG モジュールを使用した後の 4CPU サーバーでのテスト結果は次のとおりです。一歩速くなります。 2 倍以上速くなります。
TAGG モジュールには、イベントのトリガー、スムーズな終了、スレッドの動作ステータスのチェックなど、他にも多くの機能があります。つまり、TAGG モジュールは、 ノードに新しい活力を注入します。 . node が批判されていた cpu 負荷の高いタスクの処理の問題は適切に解決されました。たとえ c コードが苦手でも、マルチスレッドで真に非互換のコードを簡単に書くことができます。 ノード プログラムをブロックしています。
プログラミング関連の知識について詳しくは、プログラミング教育をご覧ください。 !
以上がNodejs がマルチスレッド処理を実行する方法についての簡単な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

さまざまなJavaScriptエンジンは、各エンジンの実装原則と最適化戦略が異なるため、JavaScriptコードを解析および実行するときに異なる効果をもたらします。 1。語彙分析:ソースコードを語彙ユニットに変換します。 2。文法分析:抽象的な構文ツリーを生成します。 3。最適化とコンパイル:JITコンパイラを介してマシンコードを生成します。 4。実行:マシンコードを実行します。 V8エンジンはインスタントコンピレーションと非表示クラスを通じて最適化され、Spidermonkeyはタイプ推論システムを使用して、同じコードで異なるパフォーマンスパフォーマンスをもたらします。

現実世界におけるJavaScriptのアプリケーションには、サーバー側のプログラミング、モバイルアプリケーション開発、モノのインターネット制御が含まれます。 2。モバイルアプリケーションの開発は、ReactNativeを通じて実行され、クロスプラットフォームの展開をサポートします。 3.ハードウェアの相互作用に適したJohnny-Fiveライブラリを介したIoTデバイス制御に使用されます。

私はあなたの日常的な技術ツールを使用して機能的なマルチテナントSaaSアプリケーション(EDTECHアプリ)を作成しましたが、あなたは同じことをすることができます。 まず、マルチテナントSaaSアプリケーションとは何ですか? マルチテナントSaaSアプリケーションを使用すると、Singの複数の顧客にサービスを提供できます

この記事では、許可によって保護されたバックエンドとのフロントエンド統合を示し、next.jsを使用して機能的なedtech SaaSアプリケーションを構築します。 FrontEndはユーザーのアクセス許可を取得してUIの可視性を制御し、APIリクエストがロールベースに付着することを保証します

JavaScriptは、現代のWeb開発のコア言語であり、その多様性と柔軟性に広く使用されています。 1)フロントエンド開発:DOM操作と最新のフレームワーク(React、Vue.JS、Angularなど)を通じて、動的なWebページとシングルページアプリケーションを構築します。 2)サーバー側の開発:node.jsは、非ブロッキングI/Oモデルを使用して、高い並行性とリアルタイムアプリケーションを処理します。 3)モバイルおよびデスクトップアプリケーション開発:クロスプラットフォーム開発は、反応および電子を通じて実現され、開発効率を向上させます。

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

Pythonはデータサイエンスや機械学習により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、簡潔な構文とリッチライブラリエコシステムで知られており、データ分析とWeb開発に適しています。 2。JavaScriptは、フロントエンド開発の中核です。 node.jsはサーバー側のプログラミングをサポートしており、フルスタック開発に適しています。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

WebStorm Mac版
便利なJavaScript開発ツール

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

Dreamweaver Mac版
ビジュアル Web 開発ツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター
