From 4e04f6b3a5a875c7d8820c679bcbcdcfba1227bf Mon Sep 17 00:00:00 2001 From: John Hurliman Date: Wed, 21 Oct 2009 17:02:55 -0700 Subject: * Clarified what FireQueueEmpty is doing with a MIN_CALLBACK_MS constant and upped it to 30ms * Removed the unused PacketSent() function * Switched UnackedPacketCollection from a SortedDictionary to a Dictionary now that the sorting is no longer needed. Big performance improvement for ResendUnacked() --- OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs') diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs index 71f4c47..2d86a40 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs @@ -531,11 +531,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP /// as an object to match the WaitCallback delegate signature private void FireQueueEmpty(object o) { + const int MIN_CALLBACK_MS = 30; + int i = (int)o; ThrottleOutPacketType type = (ThrottleOutPacketType)i; QueueEmpty callback = OnQueueEmpty; - int start = Environment.TickCount; + int start = Environment.TickCount & Int32.MaxValue; if (callback != null) { @@ -543,10 +545,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP catch (Exception e) { m_log.Error("[LLUDPCLIENT]: OnQueueEmpty(" + type + ") threw an exception: " + e.Message, e); } } - // Make sure all queue empty calls take at least a measurable amount of time, + // Make sure all queue empty calls take at least some amount of time, // otherwise we'll peg a CPU trying to fire these too fast - if (Environment.TickCount == start) - System.Threading.Thread.Sleep((int)m_udpServer.TickCountResolution); + int elapsedMS = (Environment.TickCount & Int32.MaxValue) - start; + if (elapsedMS < MIN_CALLBACK_MS) + System.Threading.Thread.Sleep(MIN_CALLBACK_MS - elapsedMS); m_onQueueEmptyRunning[i] = false; } -- cgit v1.1