2009-08-19 39 views
1

我想優化我們正在開發的應用程序的代碼。當前實現調用創建一個線程來連續輪詢服務器以獲取新數據。 如果找到新數據,線程會產生多個線程(每次創建)來檢索數據。C#真正的好處Threadpooling

我在讀關於thread pooling,並且很好奇,改變代碼來利用線程池會導致明顯的差異。

+0

我想我最初的發帖可能已經感到困惑。 初始持久線程每次輪詢服務器並且新數據可用時,都會連續產生多個線程。 有關優化的問題是我是否會注意到將這些連續多個衍生線程連續轉換爲線程池或其增益可以忽略不計。 – Setheron 2009-08-19 20:51:24

+0

爲什麼你打擾產生多個線程呢?爲什麼不從持久的輪詢線程完成呢? – 2009-08-19 20:56:52

+0

這取決於每個線程運行多長時間,以及它們生成的頻率。 – 2009-08-19 22:08:04

回答

6

如果您創建了一個長時間運行的線程來執行輪詢,您不會注意到很多差異。不可否認的是,你現在可能已經睡了一覺,所以你有很多時間需要多一個線程(與基於定時器的解決方案相比),但基本上沒問題。

當你有很多短暫的操作時,線程池特別好。開始一個線程並不是免費的,如果實際的工作是微不足道的,開銷是相當大的。線程池只是保持實際的線程在等待工作項目。然後他們可以很少的開銷執行這些工作項目。

對於單個長時間運行的任務,開銷與任務本身花費的時間相比是微不足道的,因此您不會注意到任何差異。