Example #1
0
        internal AsyncScheduler(Action <string> inLogger)
        {
            m_LowPriorityWorker    = new AsyncWorker(this, AsyncFlags.LowPriority);
            m_NormalPriorityWorker = new AsyncWorker(this, AsyncFlags.NormalPriority);
            m_HighPriorityWorker   = new AsyncWorker(this, AsyncFlags.HighPriority);

            Dispatcher = new AsyncDispatcher();

            m_WorkUnitPool = new List <AsyncWorkUnit>(StartingPoolSize);
            for (int i = 0; i < StartingPoolSize; ++i)
            {
                m_WorkUnitPool.Add(new AsyncWorkUnit(this));
            }

            m_Stopwatch = new Stopwatch();

            m_Logger = inLogger;
            if (m_Logger != null)
            {
                m_LogBuilder = new StringBuilder(256);
            }

            #if DEVELOPMENT
            DebugMode = true;
            #else
            DebugMode = false;
            #endif // DEVELOPMENT
        }
Example #2
0
 /// <summary>
 /// Dispatch any callbacks.
 /// </summary>
 internal void DispatchStop(AsyncDispatcher inDispatcher)
 {
     #if SUPPORTS_THREADING
     lock (m_LockContext)
     {
         if (m_OnStop != null)
         {
             inDispatcher.EnqueueInvoke(m_OnStop);
             m_OnStop = null;
         }
     }
     #else
     if (m_OnStop != null)
     {
         inDispatcher.EnqueueInvoke(m_OnStop);
         m_OnStop = null;
     }
     #endif // SUPPORTS_THREADING
 }