2012-11-18 12 views
5

सी # में समांतर और कार्य विभाजन?</p> <pre><code>Parallel.For(0, 100, (i,state) => { Console.WriteLine(i); }); </code></pre> <p>सवाल::

जब मैं लिखने (के मैं 10 कोर है मान लें)

  1. प्रत्येक कोर करने के लिए संख्या के राशि निर्दिष्ट करने का फार्मूला क्या है? वाला हैंडल है (यह 100/10 है?)

  2. निष्पादन बिंदु पर, प्रत्येक कोर पहले से ही जो संख्या में पता है? या क्या यह हर बार [0..100] भंडार से एक नया नंबर/एस उपभोग करता है (चलिए अब के लिए खंड या सीमा को अनदेखा करते हैं)?

  3. i पैरामीटर - क्या यह 0..100 अनुक्रमणिका का संदर्भ देता है या क्या यह प्रत्येक थ्रेड में एक सापेक्ष सूचकांक है और इसकी संख्या "संभाल" है?

+0

आप पूछ रहे हैं कि इनपुट विभाजन कैसे किया जाता है, लेकिन आप विभाजन के लिए 'समांतर' उपयोगों को दो तरीकों से अनदेखा करने के लिए कह रहे हैं (खंड और श्रेणी विभाजन)? इससे मुझे कोई समझ नहीं आती है। – svick

+0

@svick दोनों रेंज और खंड उपभोग [एन] तत्व जहां n <= 1। मुझे [एन] के मूल्य की परवाह नहीं है। लेकिन अगर यह बहुत महत्वपूर्ण है, तो n = 1 मान लें। –

उत्तर

3
  1. यह दर्ज नहीं किया गया है। शायद कार्यकर्ता कार्य एक साझा कार्य पूल से काम के टुकड़ों की जांच करते हैं। शायद वे एक बार में 10 से कम आइटम लेते हैं क्योंकि 10 आइटम लेना Parallel.For ऑपरेशन के अंत में काम पर 10 से कम धागे का कारण बनता है। एक धीमी धागा अनुक्रमिक बाधा उत्पन्न कर सकता है क्योंकि यह अभी भी एकमात्र धागा चल रहा है। काम को छोटे हिस्सों में विभाजित करना बेहतर है ताकि इस प्रकार की बाधा कम हो जाए।

  2. मुझे नहीं पता। मुझे पूरा यकीन है कि प्रतिबिंबक का उपयोग करके इस जानकारी को बाहर निकालना होगा।

  3. यह वैश्विक सूचकांक को संदर्भित करता है ताकि आप इसे साझा सूची या किसी चीज़ तक पहुंचने के लिए उपयोग कर सकें। आपके कार्य प्रतिनिधि द्वारा कभी भी देखा गया प्रत्येक i अद्वितीय होगा।

संबंधित मुद्दे