如何获得第二个System.Thread.ThreadPool?

Jad*_*ias 5 .net c# multithreading nested threadpool

如果我以嵌套的方式使用ThreadPool,我的应用程序会挂起:

 ThreadPool.QueueUserWorkItem((state) =>
      ThreadPool.QueueUserWorkItem(Action));
Run Code Online (Sandbox Code Playgroud)

如何获得第二个独立的ThreadPool来实现嵌套?

Ree*_*sey 6

只有一个ThreadPool - 它不是你可以(或应该)在应用程序中创建多个实例的东西.

我不建议这样做,但如果你真的想,你可以使用自己的ThreadPool实现的多个实例,例如SmartThreadPool.从技术上讲,这将允许单独的"线程池".

但是,我怀疑你因为死锁而挂起,而不是因为ThreadPool的使用.我会调查你在哪里挂起.如果您安装了VS 2010 beta的副本,VS2010并发可视化器非常适合.

  • "这不是你可以(或应该)在应用程序中创建多个实例的东西." Bollucks!我一直在JAVA世界中这样做.每个系统模块或任务都有一个线程池是很常见的.例如,Spring Integration通过执行程序为其轮询器和适配器执行此操作. (3认同)