2023/12/11(月)

頭が働かない。


用向きがあってnginxのソースコードを呼んでいる。

  • nginx_single_process_cycleの中でイベントループ
  • ngx_process_events_and_timersでイベントを1回処理+タイマーを1回処理
  • ngx_process_eventsでイベント処理、これはngx_event_actions.process_eventsのマクロ
  • ngx_event_actionsにはモジュールによって違う関数がセットされる(?)

イベント処理の大まかな仕組みはこんなものか。

ある程度読んでいく内に理解したが、nginxのコードを読んでいくと「関数ポインタをいくつか記録する構造体」「そのような構造体オブジェクトをグローバルに置いて中身をアプリ初期化時などに決定する」といった構造が随所にみられる。C言語だがやってることは要するにインターフェースやDIの考え方だ。だいぶ感動した。

Categories: