aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region')
-rw-r--r--OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs15
1 files changed, 13 insertions, 2 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
index 0e9f1b7..37fd252 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
@@ -223,6 +223,15 @@ namespace OpenSim.Region.ClientStack.LindenUDP
223 /// <summary>Flag to signal when clients should send pings</summary> 223 /// <summary>Flag to signal when clients should send pings</summary>
224 protected bool m_sendPing; 224 protected bool m_sendPing;
225 225
226 /// <summary>
227 /// Event used to signal when queued packets are available for sending.
228 /// </summary>
229 /// <remarks>
230 /// This allows the outbound loop to only operate when there is data to send rather than continuously polling.
231 /// Some data is sent immediately and not queued. That data would not trigger this event.
232 /// </remarks>
233 private AutoResetEvent m_dataPresentEvent = new AutoResetEvent(false);
234
226 private Pool<IncomingPacket> m_incomingPacketPool; 235 private Pool<IncomingPacket> m_incomingPacketPool;
227 236
228 /// <summary> 237 /// <summary>
@@ -881,11 +890,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP
881 } 890 }
882 891
883 PacketPool.Instance.ReturnPacket(packet); 892 PacketPool.Instance.ReturnPacket(packet);
893
884 m_dataPresentEvent.Set(); 894 m_dataPresentEvent.Set();
885 } 895 }
886 896
887 private AutoResetEvent m_dataPresentEvent = new AutoResetEvent(false);
888
889 /// <summary> 897 /// <summary>
890 /// Start the process of sending a packet to the client. 898 /// Start the process of sending a packet to the client.
891 /// </summary> 899 /// </summary>
@@ -1817,6 +1825,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
1817 // token bucket could get more tokens 1825 // token bucket could get more tokens
1818 //if (!m_packetSent) 1826 //if (!m_packetSent)
1819 // Thread.Sleep((int)TickCountResolution); 1827 // Thread.Sleep((int)TickCountResolution);
1828 //
1829 // Instead, now wait for data present to be explicitly signalled. Evidence so far is that with
1830 // modern mono it reduces CPU base load since there is no more continuous polling.
1820 m_dataPresentEvent.WaitOne(100); 1831 m_dataPresentEvent.WaitOne(100);
1821 1832
1822 Watchdog.UpdateThread(); 1833 Watchdog.UpdateThread();