public void testThreads()
{
   ManualResetEvent[] _ManualEvents = new ManualResetEvent[10]; 
   for (int i = 0; i < 10; i++)
   {
        _ManualEvents[i] = new ManualResetEvent(false);
        System.Threading.ThreadPool.QueueUserWorkItem(new WaitCallback(testMethod), _ManualEvents[i]);
   }
   WaitHandle.WaitAll(_ManualEvents);
   //All threads have completed.

public void testMethod(object objEvent)
{
     //TODO: Add your code here
     ManualResetEvent e = (ManualResetEvent)objEvent;
     e.Set();
}这是CSDN上看到的 以前有人询问如何判读线程是否都结束了的代码
用到了线程池,我想问问 使用   ManualResetEvent类让我感觉会不会是变成串行执行了,得一个一个的等待才能继续执行?
还有线程池中能不能继续创建线程池?

解决方案 »

  1.   

    在单核机上,线程由操作系统调度分配CPU时间片,得到这个时间片的线程独占CPU运行,一段时间后再把CPU独占权分配给另一个线程.如此循环,只是这个过程非常快,让人感觉好象几个线程同时在执行一样,实际上是串行执行线程池就是操作系统用来对线程进行管理和调度的一个集中营,只可以使用,不能创建它,ThreadPool是一个静态类就是这个原因
      

  2.   

    线程池就是操作系统用来对线程进行管理和调度的一个集中营,只可以使用,不能创建它,ThreadPool是一个静态类就是这个原因
    --------
    有理,等会多给你些分