>>722
どちらの方式が良いかはケースバイケースだが、Rubyの場合は
マルチスレッド方式のほうが優れたパフォーマンスになるケースが多い。

一般にIOオブジェクトのI/O操作メソッドは、その操作が完了する迄、
リターンしない(=ブロックされる)。この様な一般的なケースでは、
シングルスレッド&select方式だとそのI/O完了待ち時間がネックになって、
CPUは空いてるのにシステム全体としてのスループットが頭打ちになる。
マルチスレッド方式では、あるスレッドがI/O待ちになれば他のスレッドへ
自動的に切り替わるから、CPUを有効に活用できる(無駄な待ち時間が無い)。

逆にselect方式が性能上で優位になるのは、標準のスレッドスケジューラの
オーバヘッドすら問題視されるような、性能要求に対してシビアな環境。
Rubyは、そんなシビアな環境下でのプログラミングには不適な軽量言語。

現実のサーバソフト設計では、システム全体はマルチスレッドで動かし、
個々のスレッド内で複数のI/Oを扱う場合にselectを用いるという、
第三のハイブリッド方式が採用されるケースが多いのではないかと思う。
例えばWebサーバなら、個々のワーカースレッドで、ネットワークからの
リクエスト受信待ちとディスクへのリード完了待ちをselectで同時に監視する。