কম্পিউটার

C# এ Foreach এবং Parallel.Foreach এর মধ্যে পার্থক্য কি?


C#-এ ফোরচ লুপ একটি একক থ্রেডের উপর চলে এবং প্রক্রিয়াকরণ একের পর এক ক্রমানুসারে হয়। যেখানে C# তে Parallel.Foreach লুপ একাধিক থ্রেডের উপর চলে এবং প্রক্রিয়াকরণ সমান্তরাল ভাবে হয়। যার মানে এটি পূর্ববর্তী আইটেমটি সম্পূর্ণ হওয়ার জন্য অপেক্ষা না করে একবারে সমস্ত আইটেমের মাধ্যমে লুপ করছে৷

Parallel.Foreach কার্যকর করা স্বাভাবিক ForEach থেকে দ্রুত। Parallel.ForEach লুপ ব্যবহার করতে আমাদের System.Threading.Tasks নামস্থান আমদানি করতে হবে।

উদাহরণ

ব্যবহার করে সিস্টেম;ব্যবহার করে System.Collections.Generic;using System.Diagnostics;using System.Threading;using System.Threading.Tasks;namespace DemoApplication{class Demo{static void Main(string[] args){var animals =new তালিকা{ "বিড়াল", "ইঁদুর", "হরিণ", "হাতি", "সিংহ", "বাঘ", "কুকুর", "শুয়োর", "মহিষ", "খরগোশ", "ঘোড়া", চিতা", "গরু", "ছাগল", "ভেড়া", "গাধা", "জেব্রা", "নেকড়ে", "শেয়াল", "লেপার্ড", "বানর", "ক্যাঙ্গারু", "জিরাফি", "হিপ্পো" }; var stopWatch =Stopwatch.StartNew(); foreach (প্রাণীদের মধ্যে স্ট্রিং প্রাণী){ Console.WriteLine($"Fruit Name:{animal}, Thread Id={Thread.CurrentThread.ManagedThreadId}"); } Console.WriteLine($"foreach loop execution time ={stopWatch.Elapsed.TotalSeconds} সেকেন্ড"); var stopWatch2 =Stopwatch.StartNew(); Parallel.ForEach(প্রাণী, প্রাণী =>{ কনসোল.WriteLine($"ফলের নাম:{animal}, থ্রেড আইডি={Thread.CurrentThread.ManagedThreadId}"); }); Console.WriteLine($"Parallel foreach loop execution time ={stopWatch2.Elapsed.TotalSeconds} সেকেন্ড"); Console.ReadLine(); } } }

আউটপুট

উপরের কোডের আউটপুট হল

ফলের নাম:বিড়াল, থ্রেড আইডি =1 ফলের নাম:ইঁদুর, থ্রেড আইডি =1 ফলের নাম:হরিণ, থ্রেড আইডি =1 ফলের নাম:হাতি, থ্রেড আইডি =1 ফলের নাম:সিংহ, থ্রেড আইডি =1 ফলের নাম:বাঘ, থ্রেড আইডি =1 ফলের নাম:কুকুর, থ্রেড আইডি =1 ফলের নাম:শূকর, থ্রেড আইডি =1 ফলের নাম:মহিষ, থ্রেড আইডি =1 ফলের নাম:খরগোশ, থ্রেড আইডি =1 ফলের নাম:ঘোড়া, থ্রেড আইডি =1 ফলের নাম:চিতা, থ্রেড আইডি =1 ফল নাম:গরু, থ্রেড আইডি =1 ফলের নাম:ছাগল, থ্রেড আইডি =1 ফলের নাম:ভেড়া, থ্রেড আইডি =1 ফলের নাম:গাধা, থ্রেড আইডি =1 ফলের নাম:জেব্রা, থ্রেড আইডি =1 ফলের নাম:নেকড়ে, থ্রেড আইডি =1Fruit শিয়াল, থ্রেড আইডি =1 ফলের নাম:লেপার্ড, থ্রেড আইডি =1 ফলের নাম:বানর, থ্রেড আইডি =1 ফলের নাম:ক্যাঙ্গারু, থ্রেড আইডি =1 ফলের নাম:জিরাফি, থ্রেড আইডি =1 ফলের নাম:হিপ্পো, থ্রেড আইডি =1 ফল কাটানোর সময় 0.0129221 সেকেন্ড ফলের নাম:বিড়াল, থ্রেড আইডি =1 ফলের নাম:ইঁদুর, থ্রেড আইডি =1 ফলের নাম:হরিণ, থ্রেড আইডি =1 ফলের নাম:হাতি, থ্রেড আইডি =1 ফলের নাম:সিংহ, থ্রেড আইডি =1 ফল =1 ফল:নাম:শূকর, Thr ead Id =1 ফলের নাম:মহিষ, থ্রেড আইডি =1 ফলের নাম:কুকুর, থ্রেড আইডি =3 ফলের নাম:ভেড়া, থ্রেড আইডি =3 ফলের নাম:গাধা, থ্রেড আইডি =3 ফলের নাম:খরগোশ, থ্রেড আইডি =1 ফলের নাম:আমি যান =5 ফলের নাম:শিয়াল, থ্রেড আইডি =5 ফলের নাম:লেপার্ড, থ্রেড আইডি =5 ফলের নাম:গরু, থ্রেড আইডি =4 ফলের নাম:হিপ্পো, থ্রেড আইডি =4 ফলের নাম:ক্যাঙ্গারু, থ্রেড আইডি =9 ফলের নাম:থ্রেড আইডি, গিরাফে =6 নাম:বানর, থ্রেড আইডি =5 ফলের নাম:ঘোড়া, থ্রেড আইডি =1 ফলের নাম:চিতা, থ্রেড আইডি =1 ফলের নাম:জেব্রা, থ্রেড আইডি =3 ফলের নাম:নেকড়ে, থ্রেড আইডি =3 সমান্তরাল ফরিচ লুপ কার্যকর করার সময় =90 

উপরের ফলাফল থেকে আমরা দেখতে পাচ্ছি, Parallel.Foreach বিভিন্ন থ্রেডে এক্সিকিউট করে এবং স্বাভাবিক ফোরচের তুলনায় কম সময় নেয়।


  1. DirectX 11 এবং DirectX 12-এর মধ্যে পার্থক্য কী?

  2. C# এ আক্ষরিক এবং ধ্রুবকের মধ্যে পার্থক্য কী?

  3. C# এ স্ট্রিং এবং স্ট্রিং এর মধ্যে পার্থক্য কি?

  4. C# এ একটি তালিকা এবং একটি অ্যারের মধ্যে পার্থক্য কী?