NodeJs非同期

逐語https://www.dazhuanlan.com/2019/08/25/5d625d714f62a/


この記事では、非同期で発行NodeJsに焦点を当てています。使用NodeJs書き込み処理は、企業のインターンシップ、企業の背景には、私が書かれた責任ある使用NodeJsと帆の枠組みを午前2つのプロジェクトがある場合には、一年以上もあります。私は主にAJAXの方法を介してデータ・サーバを取得するには、サーバー上でRESTfulなインターフェース、Webクライアントを提供するために、モードを働きます。やっての過程では、多くの問題に遭遇し、最も深い感情は思考の非同期プログラミングの習慣は非常によく適応していないです。

非同期背景

実際には、非同期のは非常に早く、このような非同期があるオペレーティングシステムとしてのコンセプトを持っています。その後、Ajax技術の普及で、ほとんどのフロントエンドの開発者は、非同期の概念を理解します。V8 GoogleのChromeブラウザの導入により、nginxのサーバーの出現は、非同期ネットワーク要求は、Apache、Tomcatのより良いというようにnginxの時間で実証済みの、同時処理性能を。V8の導入後、ライアン・ダールはNodeJs、言語プラットフォームにおける技術の最初の完全にサポートNodeJsを導入しました。もちろん、ジャワ、PHPと他のプログラミングも非同期モードをサポートしていますが、Java言語に基づいて複数のスレッドとスレッド間の通信に実装されています。そして、実装言語上のNodeJsは、非同期的に考えられています。

非同期実装

非同期についての話、あなたはIO IOをブロックし、非ブロック理解する必要があります。
通常のプログラミングでは、私たちはしばしば、このような私たちが使用してC言語のように、文書、読み取りと書き込みのため、私たちはよく理解IOをブロックする開いた大規模なドキュメントを開くための機能を、ので、この時間は、プロセスが文書が読み込まれるまでブロックすることになりますその後の動作は継続します。

ノンブロッキングIOは、メインスレッドのその後の動作は、スレッドが実行を継続読み取るために待つことができない、大規模な文書を読むために別のスレッドを使用することです。メインスレッドでスレッドの終了操作を読み取るようにする場合でも、この時間は、私たちは知りません。だから我々は、ポーリング技術、各時間間隔を使用している、操作が完了したかどうかを確認するためにスレッドを読んで行きます。Linuxでは、このポーリングはでき、投票のepoll、kqueueの読み込み方法のを、しかし、ポーリング技術がポーリングされたときに、メインスレッドが空のCPUまでのを待たなければならないという欠点があります。

最高のノンブロッキングIO操作が完了した後にスレッドを読んだときにだけお互いを乱すことなく、メインスレッドとスレッドの基本的な読書は、メインスレッドが読み込まれた通知されますされています。非同期libuv、及びlibuvによって達成NodeJsは、対応するようにオペレーティング・システム・プラットフォームを実現するために使用されます。Linuxの場合と同様に、実現の方法により、スレッドプールは、Windowsプラットフォームでは、実際にIOPCも方法のスレッドプールを使用しますが、唯一のWindowsカーネルで実現IOPCを呼び出すことによって達成されます。

全体的に、NodeJsはしかし、シングルスレッド、非同期、イベント駆動型であるが、私は主にここで話をしたい、と言うマルチスレッドの非同期な方法によって達成されるnodejs。私たちは、非同期操作が基本となるスレッドプールによって完成されているメインスレッドNodeJsで実行されているシングルスレッドのコードにだけポイントについて話しています。

同様に使用することがあります書き込むための高性能非同期、または同期の方法を持っているためにコールバックするので、私たちのアプリケーションプロセス - もちろん、NodeJsは、我々は非同期モードを使用しようとするために、アプリケーション・プロセスの準備で、その後、非同期の実装です。

マルチプロセス(スレッド)メソッドをNodeJs

NodeJsはそれがシングルスレッドのマルチプロセス・テクノロジーをサポートしていないと言うことではない、我々はまだのNodeJs使用することができますchild_processをいるLinuxで、マルチプロセス動作を実現するためにフォーク、execのあなたは、このような原始的な方法を使用したくない場合は、当然のことながら、同じなど、マルチプロセス、あなたができるNodeJs クラスタ単純な実装モジュール。

参考資料

素人の言語nodejsで第III章-

素人の言語nodejsで第IX章-

NodeJs child_process

NodeJsクラスタ

おすすめ

転載: www.cnblogs.com/petewell/p/11408889.html