public static void QueueWork(IOProcessHandler handler, SocketAsyncEventArgs args) { lock (m_queue_work) { m_queue_work.Enqueue(IOProcessPool.PopHandler(handler, args)); } m_mre.Set(); if (m_queue_work.Count > 1000) { Console.WriteLine("======================: " + m_queue_work.Count); } }
private static IOHandlerInfo PopHandler(IOProcessHandler handler, SocketAsyncEventArgs args) { IOHandlerInfo hi = null; lock (m_stack_idle) { if (m_stack_idle.Count != 0) { hi = m_stack_idle.Pop(); } } if (hi == null) { hi = new IOHandlerInfo(handler, args); } else { hi.Handler = handler; hi.Args = args; } return(hi); }
public IOHandlerInfo(IOProcessHandler handler, SocketAsyncEventArgs args) { this._Handler = handler; this._Args = args; }