मैं थोड़ा उलझन में हूं Parallel.ForEach
।
क्या है Parallel.ForEach
और यह वास्तव में क्या करता है?
कृपया किसी भी MSDN लिंक का संदर्भ न लें।
यहाँ एक सरल उदाहरण दिया गया है:
string[] lines = File.ReadAllLines(txtProxyListPath.Text);
List<string> list_lines = new List<string>(lines);
foreach (string line in list_lines)
{
//My Stuff
}
मैं इस उदाहरण को फिर से कैसे लिख सकता हूं Parallel.ForEach
?
इसका जवाब यहां दिया जा सकता है। stackoverflow.com/questions/3789998/…
—
उज्जवल मनंधर
@UjjwalManander वास्तव में काफी अलग है, क्योंकि यह
—
रीड कोपसे
Parallel
कक्षा के बीच के अंतर और PLINQ का उपयोग करने के बारे में पूछ रहा है ।
दूसरों ने उत्तर दिया है कि आप कैसे फिर से लिख सकते हैं। तो फिर यह क्या करता है? यह संग्रह में प्रत्येक आइटम पर एक "एक्शन" करता है, सामान्य की तरह
—
जेपी स्टिग नीलसन
foreach
। अंतर यह है कि समानांतर संस्करण एक ही समय में कई "क्रियाएं" कर सकता है। ज्यादातर मामलों में (यह निर्भर करता है कि कंप्यूटर क्या कोड चला रहा है, और यह कितना व्यस्त है, और अन्य सामान) यह तेजी से होगा, और यह सबसे महत्वपूर्ण लाभ है। ध्यान दें कि जब आप इसे समानांतर में करते हैं, तो आप यह नहीं जान सकते हैं कि आइटम किस क्रम में संसाधित किए जाते हैं। एक सामान्य (धारावाहिक) के साथ foreach
, आपको इस lines[0]
बात की गारंटी दी जाती है कि पहले, फिर lines[1]
, और इतने पर आता है।
@JeppeStigNielsen यह हमेशा तेज नहीं होगा क्योंकि चीजों को समानांतर बनाने के साथ महत्वपूर्ण ओवरहेड है। यह उस संग्रह के आकार पर निर्भर करता है जिस पर आप पुनरावृत्ति कर रहे हैं और उसके भीतर की क्रिया। सही बात यह है कि वास्तव में Parallel.ForEach () और foreach () का उपयोग करने के बीच अंतर को मापना है। कई बार एक सामान्य फ़ॉरच्यू () तेज़ होता है।
—
डेव ब्लैक
@DaveBlack ज़रूर। प्रत्येक को यह मापना होगा कि यह तेज है या धीमा, प्रत्येक मामले में। मैं सामान्य रूप से समानांतर वर्णन करने का प्रयास कर रहा था।
—
जेपी स्टिग नीलसन