1

我在寫一個'管理控制檯',通過其提供的COM接口訪問hMailServer。我正在使用Visual Basic 2010 Express。在一個程序中,它掃描整個帳戶。因爲這是一個冗長的過程,所以我將它推入一組BackgroundWorker線程中。BackgroundWorker線程的正常數量?

第一個結果:最多19個併發線程,總時間爲36秒。

然後我重寫了一個耗時的線程初始化代碼段,並設法將所需時間減少到大約14秒......但線程數目現在已達到330個線程!

請問巨大線程數量是否有害?例如,造成內存不足的例外& c。 ?

+1

服務器管理員最終會找到你並且傷害你。 – 2011-04-27 04:47:54

+0

@Hans,因爲它發生在我*是服務器的管理員,我不認爲我需要害怕這個,heh:P – pepoluan 2011-04-27 06:34:55

回答

1

我不是vb專家,但爲什麼不將這些後臺線程的數量限制爲您計算機上可用內核數量的幾倍?大量的線程很可能會導致內存不足或線程匱乏。

+0

因爲線程大多在服務器端被阻塞。將線程數限制爲內核數意味着線程將大部分時間都處於閒置狀態。 – pepoluan 2011-04-27 03:06:36

+0

我說過多個核心數量,而不是核心數量。另外,我不知道如何創建更多的線程緩解你的阻塞 – 2011-04-27 03:45:59

+0

@Amir啊,我誤解了。關鍵是當線程被服務器阻塞時,其他線程可以繼續處理已從服務器檢索到的信息。無論如何,我正在嘗試限制現在的線程數量。 – pepoluan 2011-04-27 03:56:32