14

スレッドベースのサーバーがhttpリクエストを処理する方法と、イベントベースのサーバーがhttpリクエストを処理する方法の違いを理解するのに役立つアナロジーを探しています。サーバーが建物内の店舗であり、ポート80が店舗の正面玄関であり、httpリクエストが正面玄関を歩いたばかりの顧客であるとします。次は何が起こる?ショップは顧客をどのように扱いますか?ショップは複数の顧客をどのように処理し、顧客がショップを離れる速さに関してどのような違いがありますか?

要するに、私は「イベントループ」や「スレッド」、「ブロッキング」や「非ブロッキング」などの物理的な現実世界のアナロジーの説明を探しています。

4

1 に答える 1

21

スレッドベースのサーバーの例えでは、各顧客はそれぞれのショップの従業員によってサービスを受けます。顧客が去るとき、店の従業員は別の顧客を助けることができます。同時に支援できる従業員数は、店舗の従業員数に直結しています。

イベントベースのサーバーの例えでは、複数の顧客に1人の店員がサービスを提供する場合があります。彼をボブと呼びましょう。ボブは、しばらく時間がかかる可能性のあるさまざまな手順( 「奥の部屋でアイテムを探すx」など)を他の店舗の従業員に委任します。ボブがヘルパーに助けを求めると、ヘルパーは店内のどこかに急いで行き、元の顧客がヘルパーがボブに戻るのを待っている間、ボブは他の顧客を助けるために移動できます。ヘルパーがタスクを終了して戻ってきたら、ボブがボブの現在の顧客との良好な停止点に到達するのを待ちます。その後、ボブはヘルパーと元の顧客と再び話すことができます。

于 2013-03-24T15:05:17.550 に答える