I've been trying to do something similar.  It would appear that there is 
a bug in the windows implementation of gets which causes it to block the 
entire process instead of the thread.

In article <1751979702.20030813103416 / syspoint.com.br>, AndrWagner" 
<andre / syspoint.com.br> says...
> In Tuesday, August 12, 2003 you wrote:
> 
> >> I wonder if it's possible to read a character from the keyboard
> >> without pressing enter...
> 
> > It is completely system dependent issue.  Which platform do you
> > use?
> 
> Hmmm... I'm using Windows now, but I wish my application to be
> platform independent.
> 
> What I'm trying to write is a server on which you can type commands
> (like a prompt). So I would have two threads: one for the server
> processing (the socket) and another one for the prompt. The problem is
> that the socket thread won't write anything on the screen (like a
> warning message) if the prompt thread is waiting for a input.
> 
> I'm not sure if I made myself clear... but is there any other way I
> can do that?
> 
> Thank you in advance.
> 
>