2017-09-29 5 views
1

私は比較的新しいノードjsであり、アーキテクチャのテキストの一部を読んでいます。ノードJS Expressスレッドの明確化

私は、イベントループ、メインスレッド(V8エンジンスレッド)、残りはlibuvスレッドとしています。メインスレッドが非同期処理を行うとすぐにスレッドをlibuvスレッドに渡し、その結果としてイベントループに結果を追加します。

私の懸念はexpressを超えています。誰がhttpリクエストをイベントループに挿入しているのですか?別の専用スレッドがありますか、それともlibuvスレッドの1つですか?

答えて

4

実際には、expressはnodejsのhttp APIを使用しています。 expressまたはhapiまたは他のnodejsのフレームワークであれ、nodejsのhttp/https apiを基本として使用します。イベントループの概念は、javascriptに由来するものではなく、非同期関数を扱うためにjsが使用します。また、nodejも同様です。httpリクエストの場合、他の非同期関数と同じですが、V8は要求をnodejsに委ねますレスポンスが受信されるか、ポート上で、そしてV8スレッドにHTTPリクエストが受信されると、V8はコールバックをキューにプッシュし、sysnスレッドの後に呼び出されるのを待ちます。

+0

説明をお寄せいただきありがとうございます。この部分については、「sysnスレッドの後に呼び出されるのを待ってください」と不明です。あなたはメイン(同期)スレッドを意味しましたか? –

+0

JsまたはNodeJsはシングルスレッドのラングアラージです。私はそれがメインスレッドやその他についての概念ではないと思う、非同期スレッドはjsインタープリタ(V8エンジン)によって処理されません.v8はコールバックを受け入れます。 – sinbar

+1

私が言った "sysnスレッド"は、同期コードを意味します。 – sinbar