Hi,

At Fri, 4 Nov 2005 15:56:34 +0900,
mmiller / hick.org wrote in [ruby-core:06565]:
> Recently I encountered a problem that I think others have experienced
> before that has to do with using gets on standard input and its side
> effect of blocking all other ruby threads on win32.  The problem has to
> do with the fact that the existing code will simply indicate that there
> is data on any non-socket file handle that is passed to select (which
> includes stdin).  This leads to a blocking call being made to read (via
> getc) that prevents other ruby threads from running until data has been
> written to the console.  To help address this problem, I'm submitting a
> patch that seems to address the issue, though perhaps there is a better
> way to go about integrating it (I'll leave that up to the developers).

It should have been improved with 1.9, I guess.

> +            if (WaitForSingleObjectEx(GetStdHandle(STD_INPUT_HANDLE),
> +                    0, TRUE) == WAIT_OBJECT_0)
> +                stdin_data = 1;

It is signaled even if a mouse event arrived, e.g., just moving
mouse.

-- 
Nobu Nakada