[Mono-devel-list] Threading bug?

Simon Ask Ulsnes simon at ulsnes.dk
Mon Mar 10 13:52:59 EST 2003


Hello there,
I was just writing a tiny Internet server program (one of those which tell you 
"Hello" when you telnet them). I had in mind from the beginning, that it was 
supposed to be multi-threaded so that I could support multiple clients at a 
time.
The server works perfect - as long as I connect only one client. If I try and 
connect more clients, all of them hang up until the previous was 
disconnected...

The theory behind the program is to have a while(true)-loop in which a 
TcpListener accepts connections, starting a new thread handling each incoming 
connection.
But the loop doesn't continue when a connection has been made, it waits for 
the handler to finish.

Since I am pretty sure this works on .NET Framework 1.0 on Windows, I figure 
it is a bug in the Threading-classes.

The while(true)-loop looks like this:
while (listening)
{
	ThreadPool.QueueUserWorkItem(new WaitCallback(HandleConnection), 
listener.AcceptSocket());
	num_connections++;
}

And one more strange thing, the num_connections int is actually being 
incremented. Perhaps the ThreadPool.QueueUserWorkItem()-method is waiting for 
the previous QueueUserWorkItem() to finish?

If this is a bug in my program, I am deeply sorry for the inconvenience...

Yours sincerely,
Simon Ask Ulsnes, Denmark




More information about the Mono-devel-list mailing list