1. 线程池SELLP(1000) 的作用, 既然有join又何必用SELLP呢?2. 线程池用不用加锁,,3. 多线程与线程池区别,一般多数用哪个更好点。。4. 用monitor类加锁,与Lock加锁区别在哪里?一般用哪个?5. 都说线程池是系统自动会管理,分配,执行的,那又何必还给它加锁或再设置呢?例:
        static void DoWork(object state)  //这里面的参数,指的是什么?
        {
            int threadNumber = (int)state;
            Console.WriteLine("Thread {0}reporting for duty.", state);
            Console.WriteLine();
        }        private void button1_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < 20; i++)
            {  
               //这里DoWork方法里带参数的,这里怎么不用给参数? 
               //创建20个线程,这时候20个线程都执行上面的方法吗?

                ThreadPool.QueueUserWorkItem(new WaitCallback(DoWork), i);
            }
        }
在网上也看了些例子,但人和人写的例子,好像都不一样,有点蒙了.,对线程池之前也没接处过..所以在此请教..

解决方案 »

  1.   

    当线程Sleep时,系统就退出执行队列一段时间,当睡眠结束时,系统会产生一个时钟中断,从而 
    使线程回到执行队列中,从而恢复线程的执行。 
    如果父线程先于子线程结束,那么子线程将在父线程结束的同时被迫结束。Thread.Join()方法使父线程等待,直到子线程结束。
    “线程池”就是用来存放“线程”的对象池。
    多线程,主要是想提高程序的可伸缩性。例如,有很多任务需要并行进行,那么可能需要多线程。
    多线程实际上是一个假象
    http://topic.csdn.net/u/20100716/14/C4C1C7F1-2695-4C44-86D6-BFD2FD56929F.html
      

  2.   

    monitor类与Lock原理上都是对加锁的数据进行原子操作,只不过实现的原理不太一样,如Lock类会为
    每一个对象实例维持一个同步表,而每一个同步表都指向一个同步块,并且支持递归互斥体!