* 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()
This commit is contained in:
John Hurliman
2009-10-21 17:02:55 -07:00
parent 2b39ff0a39
commit 4e04f6b3a5
4 changed files with 8 additions and 18 deletions

View File

@@ -531,11 +531,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP
/// as an object to match the WaitCallback delegate signature</param>
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;
}