rendered paste bodyIndex: opensim/src/Main.cs
===================================================================
--- opensim/src/Main.cs (revision 73)
+++ opensim/src/Main.cs (working copy)
@@ -134,7 +134,7 @@
Console.WriteLine("Main.cs:MainServerListener() - Listening...");
while(true) {
-
+ Thread.Sleep(1000);
}
}
}
Index: opensim/src/OpenSimClient.cs
===================================================================
--- opensim/src/OpenSimClient.cs (revision 73)
+++ opensim/src/OpenSimClient.cs (working copy)
@@ -80,14 +80,16 @@
}
public void InPacket(Packet NewPack) {
- lock(PacketInbox) {
+ lock(this) {
PacketInbox.Enqueue(NewPack);
+ Monitor.PulseAll(this);
}
}
public void OutPacket(Packet NewPack) {
- lock(PacketOutbox) {
+ lock(this) {
PacketOutbox.Enqueue(NewPack);
+ Monitor.PulseAll(this);
}
}
@@ -104,24 +106,17 @@
private void ClientLoop() {
Console.WriteLine("OpenSimClient.cs:ClientLoop() - Entered loop");
- while(true) {
- lock(PacketInbox) {
- if(PacketInbox.Count>0) {
+ lock(this) {
+ while(true) {
+ Monitor.Wait(this);
+ while(PacketInbox.Count>0) {
Packet InPack = (Packet)PacketInbox.Dequeue();
ProcessInPacket(InPack);
- } else {
- Thread.Sleep(100); // yes, it's redundant, but it helps!
}
- Monitor.Wait(PacketInbox);
- }
- lock(PacketOutbox) {
- if(PacketOutbox.Count>0) {
+ while(PacketOutbox.Count>0) {
Packet OutPack = (Packet)PacketOutbox.Dequeue();
ProcessOutPacket(OutPack);
- } else {
- Thread.Sleep(100);
}
- Monitor.Wait(PacketOutbox);
}
}
}