Пример #1
0
        /// <summary>
        /// 入队列
        /// </summary>
        /// <param name="task"></param>
        public void AddGameCmdTask(GameTCPCmdTask task)
        {
            if (null == task)
            {
                Console.WriteLine("AddGameCmdTask is Null!");
                return;
            }

            lock (m_QueueMutex)
            {
                m_AddTaskQueue.Enqueue(task);
            }
        }
Пример #2
0
        public GameTCPCmdTask PopGameCmdTask()
        {
            GameTCPCmdTask restTask = null;

            lock (m_QueueMutex)
            {
                if (m_DoingTaskQueue.Count > 0)
                {
                    restTask = m_DoingTaskQueue.Dequeue();
                    return(restTask);
                }

                if (m_AddTaskQueue.Count > 0)
                {
                    Queue <GameTCPCmdTask> tmpQueue = m_AddTaskQueue;
                    m_AddTaskQueue   = m_DoingTaskQueue;
                    m_DoingTaskQueue = tmpQueue;
                }
            }
            return(restTask);
        }