我的問題可能聽起來有點天真,但我對於多線程編程頗爲新穎。創建.Net 4.0時檢查空閒內核的數量並行任務
我在寫一個處理傳入外部數據的應用程序。對於到達的新任務是通過以下方式創建的每一個數據:
System.Threading.Tasks.Task.Factory.StartNew(() => methodToActivate(data));
數據的項目到達速度非常快(每一秒,半秒,等...),創建這麼多的任務。處理每個任務可能需要大約一分鐘。在測試時,我看到線程數量一直在增加。如何限制創建的任務數量,以便實際工作線程的數量穩定高效。我的電腦只有雙核心。
謝謝!
對於多長時間的數據在同一時間到達?意思是,如果你現在得到一些數據,另一個在一秒鐘內,另一個在一秒鐘內,循環運行多久? – 2010-11-01 08:12:02
我問的原因是,如果您每隔一秒(或更快)接收數據很長一段時間,則1分鐘的處理時間將不起作用。在這種情況下,你不能簡單地把所有對象拋到線程池中。相反,我會將所有對象放入一個隊列中(.NET 4.0阻止集合應該在這裏工作),並啓動一些線程來輪詢來自該隊列的工作項。如果你每天24小時都得到數據,你將永遠無法趕上。你確定你在這裏做正確的事嗎? – 2010-11-01 08:40:49