Multithreading 线程池的实现

Multithreading 线程池的实现,multithreading,pool,Multithreading,Pool,我想知道是否有人知道一些研究线程池是如何实现的好资源。我被要求定义一个动态调整最大线程池大小的算法。大多数资源定义了需要线程池的环境,即任务是短期的,但在这个问题中,环境更为多样。长任务以及短任务,一些cpu密集型,一些空闲经常 我的第一个答案是“你可能不应该使用线程池”,但我认为我应该有一个真正的答案 我的一个想法是使用一种启发式方法来监视系统资源(CPU、内存),并相应地调整大小。或者我可以监视线程,查看它们需要多长时间,以及您可以使用库的类SelfTuningExecutors的int。我

我想知道是否有人知道一些研究线程池是如何实现的好资源。我被要求定义一个动态调整最大线程池大小的算法。大多数资源定义了需要线程池的环境,即任务是短期的,但在这个问题中,环境更为多样。长任务以及短任务,一些cpu密集型,一些空闲经常

我的第一个答案是“你可能不应该使用线程池”,但我认为我应该有一个真正的答案


我的一个想法是使用一种启发式方法来监视系统资源(CPU、内存),并相应地调整大小。或者我可以监视线程,查看它们需要多长时间,以及您可以使用库的类SelfTuningExecutors的int

。我也有同样的需求,我决定实现JDK ThreadPoolExecutor的扩展,它可以适应不同类型的任务。您可能想查看此页面

codeproject上的项目相当复杂,但是(IIRC)它具有您所说的所有功能。您应该添加一个.NET标记。非托管线程非常便宜,这一层的东西基本上是多余的。如果是非托管的,只需在工作队列中抛出256个线程,以防大量线程被阻塞。