কম্পিউটার

আমি কিভাবে C# এ Parallel.ForEach সীমাবদ্ধ করতে পারি?


সমান্তরাল পূর্বাভাস

Parallel.ForEach লুপ C# এর একাধিক থ্রেডের উপর চলে এবং প্রক্রিয়াকরণ সমান্তরাল ভাবে হয়। Parallel.ForEach লুপ C# এর মৌলিক বৈশিষ্ট্য নয় এবং এটি C# 4.0 এবং তার উপরে থেকে পাওয়া যায় Parallel.ForEach লুপ ব্যবহার করার জন্য আমাদের সিস্টেম. থ্রেডিং. টাস্ক নেমস্পেস ইমপোর্ট করতে হবে নির্দেশিকা ব্যবহার করার জন্য।

প্রাচীন

C#-এ ফোরচ লুপ একটি একক থ্রেডের উপর চলে এবং প্রক্রিয়াকরণ একের পর এক ক্রমানুসারে হয়। ফোরচ লুপ হল 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

সমান্তরালতাকে parallel.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. কিভাবে আমরা জাভাতে একটি JTextField এর ভিতরে অক্ষরের সংখ্যা সীমিত করতে পারি?

  2. একটি LXD কন্টেইনার ব্যবহার করতে পারে এমন সংস্থানগুলি কীভাবে সীমাবদ্ধ করবেন

  3. আমি কীভাবে আমার ডেটা ব্যাকআপ করতে পারি?

  4. কিভাবে একটি অ্যান্টিভাইরাস পিসির গতি বাড়াতে পারে?