Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C#

मैं समानांतर को कैसे सीमित कर सकता हूं। सी # में प्रत्येक के लिए?

समानांतर फ़ोरैच

Parallel.ForEach लूप C# में कई थ्रेड्स पर चलता है और प्रोसेसिंग समानांतर तरीके से होती है। Parallel.ForEach लूप C# की मूलभूत विशेषता नहीं है और यह C# 4.0 और इसके बाद के संस्करण से उपलब्ध है।

Foreach

सी # में फ़ोरैच लूप एक थ्रेड पर चलता है और प्रसंस्करण क्रमिक रूप से एक-एक करके होता है। Foreach लूप C# की एक बुनियादी विशेषता है और यह C# 1.0 से उपलब्ध है। इसका निष्पादन समानांतर की तुलना में धीमा है। ज्यादातर मामलों में फॉर्च्यूनर।

उदाहरण 1

static void Main(string[] args){
   List<string> alphabets = new List<string>();
   alphabets.Add("A");
   alphabets.Add("B");
   alphabets.Add("C");
   alphabets.Add("D");
   alphabets.Add("E");
   alphabets.Add("F");
   alphabets.Add("G");
   alphabets.Add("H");
   alphabets.Add("I");
   alphabets.Add("J");
   alphabets.Add("K");
   alphabets.Add("L");
   alphabets.Add("M");
   alphabets.Add("N");
   alphabets.Add("O");
   alphabets.Add("P");
   alphabets.Add("Q");
   alphabets.Add("R");
   alphabets.Add("S");
   alphabets.Add("T");
   alphabets.Add("U");
   alphabets.Add("V");
   alphabets.Add("W");
   alphabets.Add("X");
   alphabets.Add("Y");
   alphabets.Add("Z");
   Console.WriteLine("Printing list using foreach loop\n");
   var stopWatch = Stopwatch.StartNew();
   foreach (string alphabet in alphabets){
      Console.WriteLine("alphabet Name: {0}, Thread Id= {1}", alphabet,          Thread.CurrentThread.ManagedThreadId);
   }
   Console.WriteLine("foreach loop execution time = {0} seconds\n", stopWatch.Elapsed.TotalSeconds);
   Console.WriteLine("Printing list using Parallel.ForEach");
   stopWatch = Stopwatch.StartNew();
   Parallel.ForEach(alphabets, alphabet =>
   {
      Console.WriteLine("alphabet Name: {0}, Thread Id= {1}", alphabet,       Thread.CurrentThread.ManagedThreadId);
   }
   );
   Console.WriteLine("Parallel.ForEach() execution time = {0} seconds",    stopWatch.Elapsed.TotalSeconds);
   Console.Read();
   Console.ReadLine();
}

आउटपुट

फ़ोरैच लूप का उपयोग करके मुद्रण सूची

alphabet Name: A, Thread Id= 1
alphabet Name: B, Thread Id= 1
alphabet Name: C, Thread Id= 1
alphabet Name: D, Thread Id= 1
alphabet Name: E, Thread Id= 1
alphabet Name: F, Thread Id= 1
alphabet Name: G, Thread Id= 1
alphabet Name: H, Thread Id= 1
alphabet Name: I, Thread Id= 1
alphabet Name: J, Thread Id= 1
alphabet Name: K, Thread Id= 1
alphabet Name: L, Thread Id= 1
alphabet Name: M, Thread Id= 1
alphabet Name: N, Thread Id= 1
alphabet Name: O, Thread Id= 1
alphabet Name: P, Thread Id= 1
alphabet Name: Q, Thread Id= 1
alphabet Name: R, Thread Id= 1
alphabet Name: S, Thread Id= 1
alphabet Name: T, Thread Id= 1
alphabet Name: U, Thread Id= 1
alphabet Name: V, Thread Id= 1
alphabet Name: W, Thread Id= 1
alphabet Name: X, Thread Id= 1
alphabet Name: Y, Thread Id= 1
alphabet Name: Z, Thread Id= 1
foreach loop execution time = 0.0223421 seconds

Parallel.ForEach

. का उपयोग करके मुद्रण सूची
alphabet Name: A, Thread Id= 1
alphabet Name: G, Thread Id= 4
alphabet Name: H, Thread Id= 4
alphabet Name: I, Thread Id= 4
alphabet Name: J, Thread Id= 4
alphabet Name: K, Thread Id= 4
alphabet Name: L, Thread Id= 4
alphabet Name: N, Thread Id= 4
alphabet Name: O, Thread Id= 4
alphabet Name: P, Thread Id= 4
alphabet Name: Q, Thread Id= 4
alphabet Name: Y, Thread Id= 6
alphabet Name: Z, Thread Id= 6
alphabet Name: D, Thread Id= 6
alphabet Name: E, Thread Id= 6
alphabet Name: F, Thread Id= 6
alphabet Name: T, Thread Id= 6
alphabet Name: U, Thread Id= 6
alphabet Name: V, Thread Id= 6
alphabet Name: R, Thread Id= 4
alphabet Name: M, Thread Id= 5
alphabet Name: S, Thread Id= 7
alphabet Name: B, Thread Id= 1
alphabet Name: C, Thread Id= 1
alphabet Name: W, Thread Id= 6
alphabet Name: X, Thread Id= 6
Parallel.ForEach() execution time = 0.0559777 seconds

उदाहरण 2

समानांतरवाद को समानांतर में सीमित करें। foreach

static class Program{
   static void Main(string[] args){
      List<string> alphabets = new List<string>();
      alphabets.Add("A");
      alphabets.Add("B");
      alphabets.Add("C");
      alphabets.Add("D");
      alphabets.Add("E");
      alphabets.Add("F");
      alphabets.Add("G");
      alphabets.Add("H");
      alphabets.Add("I");
      alphabets.Add("J");
      alphabets.Add("K");
      alphabets.Add("L");
      alphabets.Add("M");
      alphabets.Add("N");
      alphabets.Add("O");
      alphabets.Add("P");
      alphabets.Add("Q");
      alphabets.Add("R");
      alphabets.Add("S");
      alphabets.Add("T");
      alphabets.Add("U");
      alphabets.Add("V");
      alphabets.Add("W");
      alphabets.Add("X");
      alphabets.Add("Y");
      alphabets.Add("Z");
      Parallel.ForEach(
      alphabets,
      new ParallelOptions { MaxDegreeOfParallelism = 2 },
      alphabet => { Console.WriteLine("alphabet Name: {0}, Thread Id= {1}", alphabet,       Thread.CurrentThread.ManagedThreadId); }
   );
   }
}

आउटपुट

alphabet Name: N, Thread Id= 4
alphabet Name: O, Thread Id= 4
alphabet Name: P, Thread Id= 4
alphabet Name: A, Thread Id= 1
alphabet Name: B, Thread Id= 1
alphabet Name: C, Thread Id= 1
alphabet Name: Q, Thread Id= 4
alphabet Name: R, Thread Id= 4
alphabet Name: S, Thread Id= 4
alphabet Name: T, Thread Id= 4
alphabet Name: U, Thread Id= 4
alphabet Name: V, Thread Id= 4
alphabet Name: W, Thread Id= 4
alphabet Name: X, Thread Id= 4
alphabet Name: Y, Thread Id= 4
alphabet Name: Z, Thread Id= 4
alphabet Name: H, Thread Id= 4
alphabet Name: I, Thread Id= 4
alphabet Name: J, Thread Id= 4
alphabet Name: K, Thread Id= 4
alphabet Name: D, Thread Id= 1
alphabet Name: L, Thread Id= 4
alphabet Name: E, Thread Id= 1
alphabet Name: F, Thread Id= 1
alphabet Name: G, Thread Id= 1
alphabet Name: M, Thread Id= 4

  1. संसाधनों को कैसे सीमित करें एक एलएक्सडी कंटेनर उपयोग कर सकता है

    पिछले लेख में, यदि आप प्लेटफ़ॉर्म से अपरिचित हैं, तो आप यह पता लगा सकते हैं कि LXD क्या है और इसके साथ कैसे शुरुआत करें। ज्यादातर मामलों में, आप एक बड़े पूरे को छोटे घटकों में विभाजित करने के लिए एक ही सिस्टम पर कई कंटेनरों का उपयोग करेंगे। प्रत्येक घटक द्वारा उपयोग किए जा सकने वाले संसाधनों की मात

  1. मैं अपने डेटा का बैकअप कैसे ले सकता हूं?

    आज की आईटी दुनिया में एक व्यापक बैकअप रणनीति होना आवश्यक है। डेटा खो जाने के कई तरीकों के साथ, यह समझना महत्वपूर्ण है कि अपने डेटा का सफलतापूर्वक बैकअप कैसे लिया जाए ताकि यह सुनिश्चित हो सके कि आपको असहज स्थिति का सामना न करना पड़े। तो, आप अपने डेटा का बैकअप कैसे ले सकते हैं? डेटा हानि साइबर हमले,

  1. एक एंटीवायरस पीसी को कैसे गति दे सकता है?

    कई उपयोगकर्ताओं को यह गलतफहमी होती है कि एक एंटीवायरस उनके पीसी को धीमा कर सकता है। हां, ऐसे कुछ उदाहरण हो सकते हैं जब एक एंटीवायरस आपके पीसी को धीमा कर सकता है जिसे हम बाद में इस ब्लॉग में कवर करेंगे। भले ही एक एंटीवायरस आपके पीसी को धीमा कर देता है (थोड़ा सा), यह ऐसा करता है ताकि यह आपके पीसी को ख