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.)