2010-10-21 14 views
5

जैसा कि आप समांतर की अनुक्रमणिका का अनुमान लगा सकते हैं।() लूप एक मान से दूसरी तरफ कूदता है। मैं काम की मात्रा का अनुमान कैसे लगा सकता हूं?समानांतर में प्रगति अद्यतन।() लूप

धन्यवाद।

उत्तर

7

एक काउंटर रखने के बजाय सूचकांक को देख कर है? उदाहरण के लिए:

int counter = 0; 
Parallel.For(4, 500, i => { 
    // TODO: something useful...   
    int progress = Interlocked.Increment(ref counter); 
    Console.WriteLine("{0}: {1}", progress, i); 
}); 

+0

और [यहां] (https://gist.github.com/0xorial/8b82594e8f2b96beae77) वही लपेटा हुआ है। – ironic

3
int progress = 0; 
Parallel.For(from, to, i => { 
// do the job 
Interlocked.Increment(ref progress); 
}); 

अब वास्तविक प्रगति (float)(to - from)/progress

+0

कोई रास्ता नहीं धागा तुल्यकालन के साथ हस्तक्षेप किए बिना इस मूल्य प्राप्त करने के (Interlocked उपयोग counter तक पहुँचने पर हो रही दौड़-स्थिति से बचने के लिए आवश्यक है)? – abenci

+0

@devdept संख्या। लेकिन इस विधि का उपयोग करने में समस्या क्या है? – Andrey

+0

मैंने सोचा कि समांतर। के लिए() इस मूल्य को पाने के लिए एक और अधिक शानदार तरीका शामिल है। – abenci

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