mirror of
https://github.com/opensim/opensim.git
synced 2026-05-20 07:05:46 +08:00
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
This commit is contained in:
@@ -129,14 +129,14 @@ namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase
|
||||
if (PrivateThread)
|
||||
{
|
||||
// Assign one thread per region
|
||||
scriptLoadUnloadThread = StartScriptLoadUnloadThread();
|
||||
//scriptLoadUnloadThread = StartScriptLoadUnloadThread();
|
||||
}
|
||||
else
|
||||
{
|
||||
// Shared thread - make sure one exist, then assign it to the private
|
||||
if (staticScriptLoadUnloadThread == null)
|
||||
{
|
||||
staticScriptLoadUnloadThread = StartScriptLoadUnloadThread();
|
||||
//staticScriptLoadUnloadThread = StartScriptLoadUnloadThread();
|
||||
}
|
||||
scriptLoadUnloadThread = staticScriptLoadUnloadThread;
|
||||
}
|
||||
@@ -196,21 +196,7 @@ namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase
|
||||
Thread.Sleep(scriptLoadUnloadThread_IdleSleepms);
|
||||
//if (PleaseShutdown)
|
||||
// return;
|
||||
if (LUQueue.Count > 0)
|
||||
{
|
||||
LUStruct item = LUQueue.Dequeue();
|
||||
lock (startStopLock) // Lock so we have only 1 thread working on loading/unloading of scripts
|
||||
{
|
||||
if (item.Action == LUType.Unload)
|
||||
{
|
||||
_StopScript(item.localID, item.itemID);
|
||||
}
|
||||
if (item.Action == LUType.Load)
|
||||
{
|
||||
_StartScript(item.localID, item.itemID, item.script);
|
||||
}
|
||||
}
|
||||
}
|
||||
DoScriptLoadUnload();
|
||||
}
|
||||
}
|
||||
catch (ThreadAbortException tae)
|
||||
@@ -221,6 +207,26 @@ namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase
|
||||
}
|
||||
}
|
||||
|
||||
public void DoScriptLoadUnload()
|
||||
{
|
||||
if (LUQueue.Count > 0)
|
||||
{
|
||||
LUStruct item = LUQueue.Dequeue();
|
||||
lock (startStopLock) // Lock so we have only 1 thread working on loading/unloading of scripts
|
||||
{
|
||||
if (item.Action == LUType.Unload)
|
||||
{
|
||||
_StopScript(item.localID, item.itemID);
|
||||
}
|
||||
if (item.Action == LUType.Load)
|
||||
{
|
||||
_StartScript(item.localID, item.itemID, item.script);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Helper functions
|
||||
|
||||
Reference in New Issue
Block a user