In article <slrncv1nv5.6mo.timsuth / europa.zone>,
  timsuth / ihug.co.nz (Tim Sutherland) writes:

> IO#read uses stdio which doesn't know about non-blocking, so data can be
> lost. IO#sysread is a safe alternative if non-blocking IO is used.

IO#read doesn't lost.
IO#write may lost.  [ruby-talk:93917]

It is somewhat fixed in 1.8.2: nonblocking IO#write doesn't lost in
sync mode.

It is fixed in 1.9: nonblocking IO#write doesn't lost regardless of
sync mode.

So non-blocking flag is somewhat useful to avoid whole process
blocking in write, now.
-- 
Tanaka Akira