সমান্তরাল পূর্বাভাস
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