Maintenance thread in charge of loading/unloading of scripts. 1 thread less per region.

Total so far: 2 threads less per region
Note: Currently causes delay in load/unload of scripts
afrisby-rexmerge
Tedd Hansen 2008-02-22 13:23:45 +00:00
parent 9f7366210a
commit 3bb0fe098f
2 changed files with 28 additions and 17 deletions

View File

@ -168,6 +168,11 @@ namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase
Last_maxFunctionExecutionTimens = DateTime.Now.Ticks; // Reset time Last_maxFunctionExecutionTimens = DateTime.Now.Ticks; // Reset time
} }
} }
// LOAD / UNLOAD SCRIPTS
if (m_ScriptEngine.m_ScriptManager != null)
m_ScriptEngine.m_ScriptManager.DoScriptLoadUnload();
} }
} }
} }

View File

@ -129,14 +129,14 @@ namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase
if (PrivateThread) if (PrivateThread)
{ {
// Assign one thread per region // Assign one thread per region
scriptLoadUnloadThread = StartScriptLoadUnloadThread(); //scriptLoadUnloadThread = StartScriptLoadUnloadThread();
} }
else else
{ {
// Shared thread - make sure one exist, then assign it to the private // Shared thread - make sure one exist, then assign it to the private
if (staticScriptLoadUnloadThread == null) if (staticScriptLoadUnloadThread == null)
{ {
staticScriptLoadUnloadThread = StartScriptLoadUnloadThread(); //staticScriptLoadUnloadThread = StartScriptLoadUnloadThread();
} }
scriptLoadUnloadThread = staticScriptLoadUnloadThread; scriptLoadUnloadThread = staticScriptLoadUnloadThread;
} }
@ -196,6 +196,19 @@ namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase
Thread.Sleep(scriptLoadUnloadThread_IdleSleepms); Thread.Sleep(scriptLoadUnloadThread_IdleSleepms);
//if (PleaseShutdown) //if (PleaseShutdown)
// return; // return;
DoScriptLoadUnload();
}
}
catch (ThreadAbortException tae)
{
string a = tae.ToString();
a = String.Empty;
// Expected
}
}
public void DoScriptLoadUnload()
{
if (LUQueue.Count > 0) if (LUQueue.Count > 0)
{ {
LUStruct item = LUQueue.Dequeue(); LUStruct item = LUQueue.Dequeue();
@ -211,14 +224,7 @@ namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase
} }
} }
} }
}
}
catch (ThreadAbortException tae)
{
string a = tae.ToString();
a = String.Empty;
// Expected
}
} }
#endregion #endregion