2012-03-16 103 views
0

我想知道是否有人知道一些好的資源來研究線程池如何實現。我被要求定義一個動態調整最大線程池大小的算法。大多數資源定義了你想要一個線程池的情況,即任務是短暫的,但在這個問題中,情況更加多樣化。更長的任務以及短暫的,一些cpu密集型的,一些空轉經常。線程池的實現

我的第一個答案是「你可能不應該使用線程池」,但我想我應該有一個真正的答案。

我以爲有一個想法是有啓發式觀察系統資源(CPU,內存)和相應地調整大小。或者,我可以監視線程來看看它們是如何長時間服用,以及如何INT

+1

codeproject上的[智能線程池](http://www.codeproject.com/Articles/7933/Smart-Thread-Pool)項目相當複雜,但是(IIRC)它具有您所談論的所有功能。 – 2012-03-16 06:22:34

+0

你應該添加一個.NET標籤。非管理線程非常便宜,以至於這層東西在很大程度上是多餘的。如果是非託管的,只需在工作隊列中拋出256個線程,以防大量數據被阻塞。 – 2012-03-16 08:11:42

回答

0

您可以使用類SelfTuningExecutors庫therore-concurrent。我有同樣的需求,我決定實施JDK ThreadPoolExecutor的擴展,以適應不同類型的任務。您可能想查看本頁link