public MaintenanceThread(ScriptEngine Engine)
        {
            m_ScriptEngine = Engine;
            EventManager   = Engine.EventManager;

            RunInMainProcessingThread = Engine.Config.GetBoolean("RunInMainProcessingThread", false);

            RunInMainProcessingThread = false; // temporary false until code is fix to work with true

            //There IS a reason we start this, even if RunInMain is enabled
            // If this isn't enabled, we run into issues with the CmdHandlerQueue,
            // as it always must be async, so we must run the pool anyway
            WhiteCoreThreadPoolStartInfo info = new WhiteCoreThreadPoolStartInfo
            {
                priority           = ThreadPriority.Normal,
                Threads            = 1,
                MaxSleepTime       = Engine.Config.GetInt("SleepTime", 100),
                SleepIncrementTime = Engine.Config.GetInt("SleepIncrementTime", 1),
                Name = "Script Cmd Thread Pools"
            };

            cmdThreadpool = new WhiteCoreThreadPool(info);

            WhiteCoreThreadPoolStartInfo scinfo = new WhiteCoreThreadPoolStartInfo
            {
                priority           = ThreadPriority.Normal,
                Threads            = 1,
                MaxSleepTime       = Engine.Config.GetInt("SleepTime", 100),
                SleepIncrementTime = Engine.Config.GetInt("SleepIncrementTime", 1),
                Name = "Script Loading Thread Pools"
            };

            scriptChangeThreadpool = new WhiteCoreThreadPool(scinfo);

            MaxScriptThreads = Engine.Config.GetInt("MaxScriptThreads", 100); // leave control threads out of user option
            WhiteCoreThreadPoolStartInfo sinfo = new WhiteCoreThreadPoolStartInfo
            {
                priority                  = ThreadPriority.Normal,
                Threads                   = MaxScriptThreads,
                MaxSleepTime              = Engine.Config.GetInt("SleepTime", 100),
                SleepIncrementTime        = Engine.Config.GetInt("SleepIncrementTime", 1),
                KillThreadAfterQueueClear = true,
                Name = "Script Event Thread Pools"
            };

            scriptThreadpool = new WhiteCoreThreadPool(sinfo);

            AppDomain.CurrentDomain.AssemblyResolve += m_ScriptEngine.AssemblyResolver.OnAssemblyResolve;
        }
Exemplo n.º 2
0
        public virtual void RegionLoaded(IScene scene)
        {
            if (!m_Enabled)
            {
                return;
            }

            WhiteCoreThreadPoolStartInfo info = new WhiteCoreThreadPoolStartInfo
            {
                priority = ThreadPriority.Lowest, Threads = 1
            };

            threadpool      = new WhiteCoreThreadPool(info);
            blockthreadpool = new WhiteCoreThreadPool(info);
        }