概要
各言語がC10K問題をどう解決してきたかを調べてみたところ、Non-Blocking I/O, I/O Multiplexing, Asynchronous I/Oの区別がよく分からなかったので調べてみました。
正直なところ人によってちょこちょこ定義が異なるのではっきりとした答えはなさそうですが、自分で調べてしっくりした形をまとめます。
前提
同期と非同期の違い
用語 | 説明 |
---|---|
同期 | OSにタスクを投げて、入出力の準備ができたら アプリケーションに処理が返ってくる |
非同期 | OSにタスクを投げて、入出力が完了したら通知をもらう |
ブロッキングとノンブロッキングの違い
用語 | 説明 |
---|---|
ブロッキング | OSへ依頼したタスクが完了するまで待つ |
ノンブロッキング | OSへ依頼したタスクの完了を待たない |