如何在.NET中创建固定大小的ThreadPool?

DLa*_*uer 4 .net c# multithreading threadpool

我想在.NET中创建一个固定的任意大小的ThreadPool - 我知道默认大小是25 - 但我希望有不同的大小,例如5或10.任何人?

Jon*_*eet 9

您应该小心改变线程池的大小.只有一个固定的系统线程池,可用于各种事物.使它太小可能会导致你甚至认为你没有使用的领域出现问题.

如果要为一个特定任务创建一个相对较小的线程池,则应使用单独的池.有各种第三方池可用 - 我有一个相当旧的第三方池作为MiscUtil的一部分,但它应该足够简单的用例.如果你看的话,我相信你能找到更先进的.

遗憾的是ThreadPool,框架中还没有可实例化的东西.我不记得是否可以有效提供Parallel Extensions,但我认为不会.


Ree*_*sey 5

您可以使用ThreadPool.SetMinThreadsThreadPool.SetMaxThreads来控制线程池中的线程数。

话虽如此,我建议谨慎使用它。很容易让自己陷入困境,因为 BCL 中的许多操作都依赖于可用的线程池线程。