Ejemplo n.º 1
0
        /// <summary>
        /// 设置线程池大小
        /// </summary>
        /// <param name="iSize"></param>
        public void SetPoolSize(int iSize)
        {
            int iCmpSize = iSize - m_ThreadArrary.Count;

            if (iCmpSize == 0)
            {
                return;
            }
            if (iCmpSize > 0)
            {
                for (int i = 0; i < iCmpSize; i++)
                {
                    m_ThreadShutdown.Add(false);
                    RECORD2 aObj = new RECORD2();
                    aObj.ShutdownIndex = m_ThreadShutdown.Count - 1;
                    aObj.Handle        = ThreadHelper.Start(ThreadFuncWork, aObj.ShutdownIndex);

                    m_ThreadArrary.Add(aObj);
                }
            }
            else
            {
                while (iCmpSize < 0)
                {
                    RECORD2 aObj = m_ThreadArrary[m_ThreadArrary.Count - 1];
                    m_ThreadShutdown[aObj.ShutdownIndex] = true;
                    m_ThreadArrary.RemoveAt(m_ThreadArrary.Count - 1);

                    iCmpSize++;
                }
            }
        }
Ejemplo n.º 2
0
        public ThreadPoolManager(int iTreadMaxNum = 5)
        {
            //初始化线程链表
            for (int i = 0; i < iTreadMaxNum; i++)
            {
                m_ThreadShutdown.Add(false);

                RECORD2 aObj = new RECORD2();
                aObj.ShutdownIndex = i;
                aObj.Handle        = ThreadHelper.Start(ThreadFuncWork, i);

                m_ThreadArrary.Add(aObj);
            }
        }