On Tue, Mar 1, 2011 at 10:27 AM, Eric Wong <normalperson / yhbt.net> wrote:
> Raphael Bauduin <rblists / gmail.com> wrote:
>> As ruby threads are so called green threads, what's the behaviour when
>> one thread is blocked on IO?
>
> They're only green threads on Ruby 1.8, 1.9 uses native threads.
>
>> If the thread is blocked on a system call, is the whole process, ie
>> all threads blocked because the kernel scheduler considers the process
>> as blocked on IO? Are there IOs blocking a thread without blocking the
>> whole ruby process?
>
> 1.8 will schedule other threads if the blocking IO is for a socket/pipe
> and uses the normal Ruby IO interfaces (or the extension author was
> careful).  ɯ ө  > in 1.8.

Where do you take that from?  AFAIK internally Ruby 1.8.* uses non
blocking IO calls in combination with select() to be able to let other
threads work while IO is under way.

So: if IO blocks generally other threads continue to work - even on 1.8.

Cheers

robert

-- 
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/