2012-06-21 101 views
0

我有通過兩個並行爲每個循環發送Web請求的代碼。在此方法出現之前添加線程是否會導致這些任務的執行延遲,還是會實現更多Web請求?請求速度

  for (int i = 0; i < threads; i++) 
      { 
       populateClient(ServerID, debugLog, type, mC); 
       tasks[i] = Task.Factory.StartNew(() => 
       { 
        testMaps(ServerID, DebugLog, Type, mC.cl, mC.keywords, mC.locations); 
       }); 
      } 
      while (tasks.Any(t => !t.IsCompleted)) { } //spin wait 

// ...

static void testMaps(Int64 serverID, String debugLog, String type, ClientInfo cl, 
     List<Keyword> keywords, 
     List<String> locations) 
    { 
     Parallel.ForEach(keywords, keyword => 
     { 
      Parallel.ForEach(locations, location => 
      { 
      strFileName = file.DownloadString(query); 

// ..

回答

1

你的程序是好的。像這樣的I/O可以以相對高的並行度程度並行運行,因此,啓動許多任務,明確以及通過Parallel.ForEach都不是問題。實現通常會很好地管理它們,並且不會產生不必要的開銷,因爲它基於底層線程池。

+0

很酷的感謝,我擔心,我正在創造更多的開銷,這可能會減慢過程。 –