それは実際にシングルスレッドモードのノードであります

     ノードを言及し、我々はすぐにシングルスレッド、非同期IO、イベント駆動型と言い換えると考えることができます。私たちは、最初のノードが実際にシングルスレッド、およびシングルスレッドなので、非同期IOの場合、および時限イベント(setTimeoutを、のsetIntervalなど)それはそれがどこにあるかに行われるべきであるクリアする必要があります。

     実際には、厳密によると、ノードは、シングルスレッドではありません。ノードのスレッド、などのさまざまながあります。

  • 実行のJSエンジンのスレッド
  • タイマースレッド(のsetTimeout、のsetInterval)
  • HTTP非同期スレッド(アヤックス)

     ...

     私たちは通常、単一のスレッドを参照してくださいメインスレッド上で実行するための一つのノードのみJSエンジンです。その他のイベント駆動型非同期IOとlibuvによって内部スレッドプールとスレッドのスケジューリングを達成するために、関連するスレッド。イベントループに存在libv、同様の効果を達成するためにマルチスレッドイベントループによって切り替えます。イベントループの簡単な用語は、このような発見として、非同期IOとタイマー機能は、現在実行中のイベントキューに非同期コールバックにこれらを置く場合は、スタックを維持し、イベントキュー、スタックを実行することです。現在の実行スタック実行が完了した後、イベント・キューから、イベントが特定の順序で非同期コールバック関数をキューに入れます。

 

 

      上図実行スタック、イベントキュー、特定の順序でコールバックキューへの最後のイベントからは、全体のプロセスは、イベントループの簡略化されたバージョンです。また、コールバック関数が実行されると、それが実行スタックを生成します、コールバック関数は、ネストされた実行スタックがあると言うことですネストされた非同期関数であってもよいもあります。

      シングルスレッド手段JSエンジンにおけるそのノードは、単一のメインスレッド、他の非同期動作は、また、イベントループlibvを通して同様のマルチスレッドコンテキストスイッチとスレッドを達成するために、実行するために別のスレッドを持っているだけで実行されプールのスケジュール。スレッドは、プロセスの最小であり、したがって、ノードは、1つのプロセスです。ノードは、シングルスレッド化およびシングルプロセスである理由を説明します。

おすすめ

転載: www.cnblogs.com/xinsir/p/11883667.html