2011-08-29 8 views
14

डिफ़ॉल्ट रूप से (नहीं .combine), foreach /% dopar% एक सूची में परिणाम देता है। लूप/पुनरावृत्ति के आदेश से मेल खाने के लिए सूची में परिणामों का क्रम क्या है? दूसरे शब्दों में, क्या क्रम क्रमशः पुनरावृत्ति के समान होगा? या सूची समानांतर कार्य पूर्ण होने के रूप में पॉप्युलेट हो जाती है? प्रलेखन ब्राउज़ करना, मुझे लगता है कि एक .inorder पैरामीटर है, लेकिन ऐसा लगता है कि एक .combine फ़ंक्शन का उपयोग करते समय ही लागू होता है।foreach% dopar% - परिणामों के क्रम पर गारंटी?

उत्तर

21

जब कॉल समाप्त होता है, तो foreach का परिणाम 'सामान्य' लूप के समान क्रम में होगा। हालांकि, उस क्रम के लिए कोई गारंटी नहीं है जिसमें वे 'वहां पहुंचते हैं': सिद्धांत (और जब समानांतरता में भी, अभ्यास में), पहली वस्तु दूसरे के बाद बाद में भर दी जा सकती है।

तो आपके पास निष्पादन के आदेश पर कोई गारंटी नहीं है (उदा। प्रगति सलाखों या लॉगिंग कोबल्ड किया जा सकता है), लेकिन आप आश्वस्त रह सकते हैं कि परिणाम आपके द्वारा अपेक्षित क्रम में होंगे।

+1

निक - धन्यवाद! मैंने परिणामों के निष्पादन और आदेश के आदेश के बीच भेद की सराहना की – SFun28

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