„Přístup použitý v Ruby však může zapříčinit, že např. déle trvající (blokující) vstupně/výstupní operace zablokuje všechna vlákna bez ohledu na to, zda mají s onou V/V operací něco společného.“A není tohle náhodou nesmysl? Veškeré IO operace v Ruby jsou blokující na úrovni threadů, ale runtime Ruby používá pouze neblokující operace a pokud není operace dokončena, zablokuje pouze postižený thread a dále zpracovává ostatní. Takže tohle opravdu nechápu, co tím máte na mysli.
Nejsem si tak úplně jistý, zda se na to dá zcela spolehnout. Například následující kód
Thread.new { 10.times { |i| sleep 1; puts i } } sleep 5 File.new('con:').getc sleep 5
se v Ruby 1.8.4 pod Win XP chová tak, že to čekání na vstup znaku z konzoly zablokuje to vlákno z prvního řádku, dokud ten znak není zadán. Proto je v textu to slovo "může". Nicméně je pravda, že to mohlo být v textu formulováno přesněji, resp. měly být zmíněny vhodnější příklady, kdy se (nechtěně) blokují ostatní thready.