Thought this stuff might someday be relevant for Ruby on Win32.

At (http://www.perl.com/pub/2001/02/p5pdigest/THISWEEK-20010206.html)
Simon Cozens wrote:

# select() on Win32
# 
# Barrie Slaymaker mentioned that he wanted to get select() working
# on Win32, and that Perforce were interested in funding the work.
# Nick Ing-Simmons said that the PerlIO abstraction layer would help
# with this: 
# 
#     [T]he problem is that on Win32 to use select() the Socket has to
#     be in synchronous mode. While to use WaitForMultipleEvents() the
#     Socket has to be in asynchronous mode - thus if you want to use
#     Win32's native "poll-oid" API you cannot use select(). In
#     addition MS's C runtime ( read/ fread etc) will not work on
#     sockets in asynchronous mode (or non-blocking IO in general). 
# 
#     So you need to replace read and stdio with another IO subsystem
#     and get perl to use it - hence PerlIO. 
# 
# Uri Guttman predictably took this as a cue to push for a portable
# event interface; Rocco Caputo said that he'd added an
# event-driven IPC::Run-style process communication model to his
# POE module which worked fine on Win32, using TCP sockets as a
# form of select()-able pipe emulation. 
# 
# Nick wanted to work at the problem from the other end, by
# building up a new PerlIO bottom layer for Windows, using the
# native Windows IO calls. Sean McCune, who's working with Barrie
# on this, said that's what he would try to do. As Jarkko pointed
# out: 
# 
#     First fork() emulation and now select()? If we are not careful
#     in ten years or so NT/W2K/W2010 will be almost as useful as
#     UNIX was in mid-1980's. 

Conrad Schneiker
(This note is unofficial and subject to improvement without notice.)