2013-04-10 7 views
17

यह उदाहरण है कि माइक्रोसॉफ्ट समानांतर के लिए प्रस्तुत करता है, और मैं जानना चाहता हूं कि इस कोड के लिए अधिकतम संख्या में थ्रेड कैसे कॉन्फ़िगर करें। पाश को चलाने के लिएसमानांतर में अधिकतम संख्या में थ्रेड को कॉन्फ़िगर कैसे करें।

 // A basic matrix multiplication. 
    // Parallelize the outer loop to partition the source array by rows. 
    System.Threading.Tasks.Parallel.For(0, matARows, i => 
    { 
     for (int j = 0; j < matBCols; j++) 
     { 
      // Use a temporary to improve parallel performance. 
      double temp = 0; 
      for (int k = 0; k < matACols; k++) 
      { 
       temp += matA[i, k] * matB[k, j]; 
      } 
      result[i, j] = temp; 
     } 
    }); // Parallel.For 
+0

क्या यह वास्तव में प्रस्तुत किया गया उदाहरण है? क्योंकि इस समय यह वास्तव में अमान्य है। क्या आप दिखा सकते हैं कि यह कहां प्रस्तुत किया गया है? –

+0

हाँ। खैर, यहां मैंने केवल प्रासंगिक खंड प्रस्तुत किया है। पूरा उदाहरण यहां है: http://msdn.microsoft.com/en-us/library/dd460713.aspx –

+0

आपने एक टुकड़ा प्रस्तुत किया जो "सिस्टम। थ्रेडिंग। टास्क। टास्क क्रिएशनऑप्शन" के मध्य में सिंकैक्टिक रूप से गलत है किसी कारण के लिए तर्क सूची। –

उत्तर

26

आप एक ParallelOptions मूल्य निर्दिष्ट करने की आवश्यकता सुझाव देंगे MaxDegreeOfParallelism के साथ:

उदाहरण के लिए:

Parallel.For(0, 10, new ParallelOptions { MaxDegreeOfParallelism = 4 }, count => 
{ 
    Console.WriteLine(count); 
}); 
संबंधित मुद्दे