リクエストの対処する仕組み
スレッドモデル(Apache)
リクエストが来た際にスレッドを作成して対応する
※スレッドは同時にひとつのリクエストしか処理できない。
新しいリクエストが来た際には、新しいリクエストを作成して対応する
問題
スレッドを作成するとメモリを消費するため、スレッドの作成限界がある。
リクエストが多い場合、スレッドが立ちあげれず、リクエストが待ち状態になる。
イベントループ(Node.js)
メインスレッドとバックスレッドの2つがあり、動作している。
メインスレッドには、処理待ちのキューがあり、リクエストが来た際には、キューに登録する。
※新しくスレッドは作成しない
キューをループで回し、バックグランドで動くスレッドに渡し、そちらで処理を実行していく。
プログラムを書く際は、ループをブロックしないように記述する。(Non-blocking)
時間がかかりそうな処理は、コールバック関数で実装する
メインで動くスレッドが、新規に作成されない為、シングルスレッドと呼ばれる。