非同期処理について調べた
ある本を読んでいた時に非同期処理について混乱しました。非同期処理の実現方法についていまいち理解していなかったせいです。
そこで、簡単に非同期処理を実現する方法に調べてみたらすっきりしたのでまとめておきます。
非同期処理の実現
非同期処理を実現する方法は複数あります。
マルチプロセスやJavaやKotlinでおなじみのマルチスレッドは歴史のある非同期処理の実現方法のようです。
サーバソフトウェアで有名なApache HTTP Serverもマルチスレッドで非同期処理を実現しています。
ただ、Webが大規模なアクセスを処理する必要が出てきた頃からC10K問題という問題が起きます。
これはクライアントが同時に1万人(=10キロ人)アクセスしてくるとプロセスやスレッドが増えすぎて処理速度が一気に低下するというものでした。
そこで、その問題を解決するためにプロセスやスレッドを増やさずに入力待ちや応答待ちなどのインターバルをうまく利用して効率的に処理する、イベント駆動モデルが出現したそうです。
イベント駆動モデルは筆者の知っている範囲ではPHP/Laravelのキューとジョブが代表的に思います。
また、サーバソフトウェアとしてはnginx(エンジンエックス)がイベント駆動モデルで実装されていることは比較的よく知られていると思います。
おわりに
結構言葉で混乱してしまうこともあるのでこういう言葉遣いは丁寧に追っていきたいですね。
参考文献
[1] 初田直也他, Rustプログラミング入門, 昭和システム, 2020.