From: "Francis Cianfrocca" <garb...@gmail.com>
Try this: create a pipe or socketpair in native code. Then you can create a
ruby IO object from the file-descriptor of the read-side of the pipe. Then
call Ruby's select (NOT the native select) on the IO object. When it selects
readable, you run your Ruby code. This blocks neither your native threads
nor your other Ruby threads.
I know this works in both Unix and Windows, but the native code is slightly
different.
Cool. I didn't realize one could wrap a native win32 pipe
handle in some way that will work with ruby's select!
The impression I got from the windows select() documentation
was that it only works with winsock sockets.
This makes me wonder why ruby wouldn't already be creating
the "proper kind" of pipes and socketpairs that work with its
select(), if it's that easy to create one myself and wrap it
in a ruby IO object?
Strange . . .
Thanks,
Bill