5

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

4

5 回答 5

9

您应该小心更改线程池的大小。只有一个固定的系统线程池,供各种事物使用。将其设置得太小可能会导致您甚至认为自己没有使用的区域出现问题。

如果你想为一个特定的任务使用一个相对较小的线程池,你应该使用一个单独的池。有各种可用的第三方池——我有一个相当旧的池作为MiscUtil的一部分,但对于简单的用例来说应该足够好了。如果你看的话,我相信你可以找到更高级的。

不幸的是ThreadPool,框架中还没有实例化对象。我不记得 Parallel Extensions 是否会有效地提供一个,但我认为不会。

于 2009-08-18T16:08:29.250 回答
5

您可以使用ThreadPool.SetMinThreadsThreadPool.SetMaxThreads对线程池中的线程数进行一些控制。

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

于 2009-08-18T16:07:55.947 回答
4
ThreadPool.SetMaxThreads()
于 2009-08-18T16:06:48.273 回答
0

ThreadPool.SetMaxThreads(5,5) 然后超过五个线程的任何东西都会排队。

于 2009-08-18T16:06:49.410 回答
0

您需要 ThreadPool.SetMaxThreads() 方法。

于 2009-08-18T16:07:14.667 回答