"pat zes" <jonnypichler / gmx.net> writes:

> ruby threads are (i think) ruby-internal so if ruby does a call to the OS,
> ruby can't act (let another thread do it's work) until it gets control back
> from the OS. 

The threading in the official ruby implementations is implemented in
pure user-space threading with pre-emptive scheduling. Conceptually,
if you spawn two threads, and one of them is blocked by a syscall, the
other thread execution should not be affected (blocked). The current
implementation does this by employing a regularly occuring signal that
interrupts whatever the process is doing and hand back the control to
the scheduler, allowing the scheduler to run another thread.

YS.