मुझे ऐसी विधि को समानांतर करने की आवश्यकता है जो सूची में तत्वों पर एक विस्तृत जोड़ी की तुलना करता है। धारावाहिक कार्यान्वयन सीधे आगे है:नेस्टेड समांतर। फोरएच लूप्स एक ही सूची में?
foreach (var element1 in list)
foreach (var element2 in list)
foo(element1, element2);
इस मामले में, foo element1 या element2 की स्थिति को नहीं बदलेगा। मैं जानता हूँ कि यह नेस्टेड Parallel.ForEach बयान बस करने के लिए सुरक्षित नहीं है:
Parallel.ForEach(list, delegate(A element1)
{
Parallel.ForEach(list, delegate(A element2)
{
foo(element1, element2);
});
});
क्या समानांतर कार्य लाइब्रेरी का उपयोग कर इसे लागू करने के लिए आदर्श तरीका क्या होगा?
कि PFX मान के रूप में कई धागे पैदा करेगा न करें क्योंकि समानांतर कार्य हैं - यह उससे बेहतर है। –
बेशक नहीं। डिफ़ॉल्ट रूप से, यह कोर के रूप में कई धागे बनाता है। लेकिन समस्या यह है कि प्रत्येक पुनरावृत्ति के बाद, यह पता लगाने का प्रयास करेगा कि कौन सा धागा अगले पुनरावृत्ति को निष्पादित करेगा। –
मुझे नहीं लगता कि वह कह रहा है कि कई धागे होने जा रहे हैं, बस प्रत्येक फंक्शन कॉल के लिए एक कार्य को एनक्यूइंग करने के लिए प्रत्येक बाहरी लूप के लिए पीएफएक्स इंजन का आह्वान करने की तुलना में अधिक ओवरहेड होगा। – Gabe