[Mono-devel-list] XSP Listening Mechanism

Aaron Clauson aza_rc at yahoo.com
Mon Sep 20 06:03:17 EDT 2004


I have been playing around a bit with XSP on Linux and
Windows. I have no problems on Linux. On Windows I
have no problems if I use the mono runtime. On Windows
I have a problem if I use the Microsoft runtime.

I tracked the problem down to an infinite loop in the
method that listens for incoming socket connections. I
fixed the problem but was just curious if anyone knows
why the mechanism below is employed in the RunServer
method of the ApplicationServer class:

while (!stop){
 w = wSockets.Count;
 Socket.Select (wSockets, null, null, (w == 1) ? -1 :
1000 * 1000); // 1s
 w = wSockets.Count;


 wSockets.Clear ();
 if (allSockets.Count == 1) {
  wSockets.Add (listen_socket);
 } else {
  wSockets.AddRange (allSockets);

I may be missing something but I can't see how
wSockets.Count will ever not equal 1 up until the
first connection is established. This means the CPU
jumps to 100% until a connection is established!

Is there any reason not to just do:

while (!stop){
 Socket clientSocket = listen_socket.Accept();
 IWorker worker = webSource.CreateWorker(clientSocket,
 ThreadPool.QueueUserWorkItem (new WaitCallback


Do you Yahoo!?
New and Improved Yahoo! Mail - 100MB free storage!

More information about the Mono-devel-list mailing list