From: Eric Wong <normalperson@...>
Date: 2011-04-01T07:26:14+09:00
Subject: [ruby-core:35593] Re: [Ruby 1.9 - Feature #4538] [PATCH (cleanup)]	avoid unnecessary select() calls before doing I/O

Charles Nutter <headius@headius.com> wrote:
> Is it possible to interrupt/wakeup a thread that's doing a direct
> blocking IO call? I always understood that as the primary reason for
> doing the select logic.

Yes for non-regular files as long as the signal handlers don't set the
SA_RESTART flag.  Ruby does not set SA_RESTART anywhere and can
interrupt I/O on pipes/sockets at any time.

Regular files are special.  select() just returns success immediately on
regular files and the IO operation will block (refusing to accept
signals) while waiting for disk.  NFS can be mounted to be
interruptable, but you still can't rely on select()/poll() for readiness
notification.

-- 
Eric Wong