C# में Foreach लूप एक ही थ्रेड पर चलता है और प्रसंस्करण क्रमिक रूप से एक-एक करके होता है। जबकि C# में Parallel.Foreach लूप कई थ्रेड्स पर चलता है और प्रसंस्करण समानांतर तरीके से होता है। जिसका अर्थ है कि यह पिछले आइटम के पूरा होने की प्रतीक्षा किए बिना एक बार में सभी आइटम्स के माध्यम से लूप करता है।
Parallel.Foreach का निष्पादन सामान्य ForEach से तेज़ है। Parallel.ForEach लूप का उपयोग करने के लिए हमें System.Threading.Tasks नेमस्पेस आयात करने की आवश्यकता है।
उदाहरण
using System;
using 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 List<string>{
"cat", "rat", "deer", "elephant", "lion", "tiger", "dog", "pig", "buffalo", "rabbit", "horse", "cheetah", "cow", "goat", "sheep", "donkey", "zebra", "wolf", "fox", "lepoard", "monkey", "kangaroo", "girafee", "hippo"
};
var stopWatch = Stopwatch.StartNew();
foreach (string animal in animals){
Console.WriteLine($"Fruit Name: {animal}, Thread Id={Thread.CurrentThread.ManagedThreadId}");
}
Console.WriteLine($"foreach loop execution time = {stopWatch.Elapsed.TotalSeconds} seconds");
var stopWatch2 = Stopwatch.StartNew();
Parallel.ForEach(animals, animal =>{
Console.WriteLine($"Fruit Name: {animal}, Thread Id={Thread.CurrentThread.ManagedThreadId}");
});
Console.WriteLine($"Parallel foreach loop execution time = {stopWatch2.Elapsed.TotalSeconds} seconds");
Console.ReadLine();
}
}
}
आउटपुट
उपरोक्त कोड का आउटपुट है
Fruit Name: cat, Thread Id= 1 Fruit Name: rat, Thread Id= 1 ... (सभी क्रमिक थ्रेड 1 पर) foreach loop execution time = 0.0129221 seconds Fruit Name: cat, Thread Id= 1 Fruit Name: rat, Thread Id= 1 Fruit Name: deer, Thread Id= 1 Fruit Name: elephant, Thread Id= 1 Fruit Name: lion, Thread Id= 1 Fruit Name: tiger, Thread Id= 1 Fruit Name: dog, Thread Id= 1 Fruit Name: pig, Thread Id= 1 Fruit Name: buffalo, Thread Id= 1 Fruit Name: sheep, Thread Id= 3 Fruit Name: donkey, Thread Id= 3 Fruit Name: rabbit, Thread Id= 1 Fruit Name: goat, Thread Id= 5 Fruit Name: fox, Thread Id= 5 Fruit Name: lepoard, Thread Id= 5 Fruit Name: cow, Thread Id= 4 Fruit Name: hippo, Thread Id= 4 Fruit Name: kangaroo, Thread Id= 9 Fruit Name: girafee, Thread Id= 6 Fruit Name: monkey, Thread Id= 5 Fruit Name: horse, Thread Id= 1 Fruit Name: cheetah, Thread Id= 1 Fruit Name: zebra, Thread Id= 3 Fruit Name: wolf, Thread Id= 3 Parallel foreach loop execution time = 0.0092988 seconds
उपरोक्त परिणाम से हम देख सकते हैं, Parallel.Foreach विभिन्न थ्रेड्स में निष्पादित होता है और सामान्य foreach की तुलना में कम समय लेता है।