【发布时间】:2012-03-16 06:20:44
【问题描述】:
我想知道是否有人知道一些很好的资源来研究线程池是如何实现的。我被要求定义一个动态调整最大线程池大小的算法。大多数资源定义了您想要线程池的情况,即任务是短暂的,但在这个问题中,情况更加多样化。较长的任务以及较短的任务,一些 cpu 密集型,一些经常空闲。
我的第一个答案是“您可能不应该使用线程池”,但我认为我应该有一个真正的答案。
我的一个想法是有一个启发式方法来观察系统资源(CPU、内存)并相应地调整大小。或者我可以监视线程以查看它们花费了多长时间以及 int
【问题讨论】:
-
codeproject 上的Smart Thread Pool 项目相当复杂,但 (IIRC) 它具有您所说的所有功能。
-
您应该添加一个 .NET 标签。非托管线程非常便宜,以至于这层东西在很大程度上是多余的。如果不受管理,只需在工作队列中抛出 256 个线程,以防大量线程被阻塞。
标签: multithreading pool