मैं फॉर लूप में समांतरता ब्रेक की जांच कर रहा हूं।समांतर। फॉर और ब्रेक() गलतफहमी?
मैं इस कोड उम्मीद थी:
Parallel.For(0, 10, (i,state) =>
{
Console.WriteLine(i); if (i == 5) state.Break();
}
सबसे 6 संख्या (0..6) पर उपज के लिए
this और this पढ़ने के बाद मैं अभी भी एक प्रश्न है। न केवल वह यह नहीं कर रही है, लेकिन अलग-अलग परिणाम लंबाई है:
02351486
013542
0135642
बहुत कष्टप्रद। (जहां नरक यहाँ तोड़() {5 के बाद} है ??)
तो मैं MSDN
को देखातोड़ पाश करने के लिए बातचीत करने के लिए है कि मौजूदा यात्रा के बाद कोई अन्य पुनरावृत्तियों होने की जरूरत इस्तेमाल किया जा सकता चलाते हैं। यदि ब्रेक को में 0 से 1000 के समानांतर लूप के 100 वें पुनरावृत्ति से बुलाया जाता है, तो 100 से कम सभी पुनरावृत्तियों को अभी भी रन होना चाहिए, लेकिन 101 से 1000 तक पुनरावृत्तियों आवश्यक नहीं हैं।
quesion # 1:
कौन सा पुनरावृत्तियों? समग्र पुनरावृत्ति काउंटर? या प्रति थ्रेड? मुझे यकीन है कि यह प्रति धागा है। कृपया अनुमोदन करें।
प्रश्न # 2:
चलें हम समानांतर + रेंज विभाजन का उपयोग कर रहे (तत्वों के बीच कोई cpu लागत परिवर्तन के कारण) तो यह धागे के बीच डेटा बिताते हैं मान। तो अगर हम (उन के बीच में है और सही डिवीजनों) 4 कोर है:
core #1 got 0..250
core #2 got 251..500
core #3 got 501..750
core #4 got 751..1000
तो core #1
में धागा कुछ समय value=100
को पूरा करेगा और टूट जाएगा। यह उसका पुनरावृत्ति संख्या 100
होगा। लेकिन core #4
में धागा अधिक क्वांट मिला और वह अब 900
पर है। वह से परे 100'th
पुनरावृत्ति है। उसके पास बंद होने के लिए सूचकांक कम 100 नहीं है !! - तो वह उन्हें सब दिखाएगा।
क्या मैं सही हूँ? यही कारण है कि मुझे अपने उदाहरण में 5 से अधिक तत्व क्यों मिलते हैं?
प्रश्न # 3:
कैसे cn मैं सच में जब (i == 5)
तोड़ने?
पेज।
मेरा मतलब है, चलो! जब मैं Break()
करता हूं, तो मैं चीजों को लूप को रोकना चाहता हूं। मैं For
लूप नियमित रूप से करता हूं।
आपका मतलब है कि _Break() लूप को किसी भी मान को संसाधित नहीं करेगा जो उनके INDEX> 5_ .... सही है? –
@RoyiNamir हां, तरह। आइटम अभी भी संसाधित किए जाएंगे यदि वे पहले से ही निर्धारित और शुरू हो चुके हैं, लेकिन कोई भी नई वस्तु संसाधित नहीं होगी। यदि आप 'समानांतर' हैं। '' में हैं, तो गणना में स्थान के पिछले आइटम जहां आप ब्रेक() को कॉल करते हैं, अब निर्धारित नहीं होंगे। –
ब्रेक के संबंध में 'बनाम फोरैच 'में कोई अंतर है ??? –