
1.2
リアクタパターン
9
❷
I/O
要求が届くと、デマルチプレクサがイベントを生成してキューに入れる
❸
イベントループにおいて、キューの中のすべてのイベントが走査されて処理される
❹
各イベントに対して、登録済みのハンドラ(コールバック関数)が呼び出される(ハンドラはアプ
リケーションのコードに記述されている)
❺
ハンドラの呼び出しが完了すると、イベントループで次のイベントが処理される(❺
-
a
)。ハンド
ラ内でさらに
I/O
要求が発行される場合もあるので(❺
-
b
)、その場合はイベントループに処理が
戻る前に、❶と同じ手順でマルチプレクサに対してリクエストが発せられる
❻
イベントループですべてのイベントが処理されると、デマルチプレクから新しいイベントが送ら
れてくるまで待ちの状態になる
これで非同期処理がどのように行われるかが明確になったことでしょう。自分が作るアプリケーショ
ン側では、あるリソースにアクセ
スするためのリクエストをハンドラ(コールバック関数)を指定して送
るだけで、いったんその処理のことは忘れて、ほかの処理に取りかかることができます。送ったリクエ
ストの処理が終了すると、ハンドラが起動されることになっているので、このハンドラの中にリクエス
トが終わったときにやるべき処理を記述しておけばよいのです。
デマルチプレクサに完了待ちの
I/O
タスクがなく、さらにイベントキューに処理待ちのイ
ベントがない場合、アプリケーションは終了することになります。
リアクタパターンは
Node
の中核となるもので、 ...