From: "Simon Kröçer" <SimonKroeger / gmx.de> > > ------------------------------- > $stdout.sync = true > rd, wr = IO.pipe > > Thread.new do > loop do > puts 'foo!' > sleep 0.5 > end > end > > sleep 2 > puts(rd.gets) > ------------------------------- > > ruby 1.8.4 (2005-12-24) [i386-mswin32] > gives me 4 foo!s and waits for the rest of eternity. > So blocking on a pipe isn't an option for platform independent code. > (or am I doing something wrong, please say I'm doing something wrong!) As far as I know, on mswin32 ruby, the only genuine nonblocking I/O is with sockets. I, too, have need to wake up a ruby thread from a native thread in my application. Currently I'm using polling. My thinking was to use UDP over loopback. My ruby thread would sleep waiting for the C thread to send it a UDP packet. I haven't tried this yet. I'm certain it would work, technically, but I'm wary of it because I've had experiences in the past where simply creating a socket (even on localhost) causes the user's computer to decide to take the modem off-hook and try to connect to their AOL account... :rolleyes: (This was about six years ago. I'm not sure if Windows still behaves like that with dialup connections or not.) Regards, Bill