.NET फ्रेमवर्क 4 लाया System.Collections.Concurrent नेमस्पेस। इसमें कई संग्रह वर्ग हैं जो थ्रेड-सेफ और स्केलेबल हैं। इन संग्रहों को समवर्ती संग्रह कहा जाता है क्योंकि उन तक एक समय में कई थ्रेड्स द्वारा पहुंचा जा सकता है।
C# में निम्नलिखित समवर्ती संग्रह हैं:
| क्र.सं | प्रकार और विवरण |
|---|---|
| 1 | BlockingCollection<T> किसी भी प्रकार के लिए बाउंडिंग और ब्लॉकिंग कार्यक्षमता। |
| 2 | ConcurrentDictionary<TKey,TValue> कुंजी-मान जोड़े के शब्दकोश का थ्रेड-सेफ कार्यान्वयन। |
| 3 | ConcurrentQueue<T> FIFO (फर्स्ट-इन, फर्स्ट-आउट) कतार का थ्रेड-सेफ कार्यान्वयन। |
| 4 | ConcurrentStack<T> LIFO (लास्ट-इन, फर्स्ट-आउट) स्टैक का थ्रेड-सेफ कार्यान्वयन। |
| 5 | ConcurrentBag<T> तत्वों के अनऑर्डर्ड संग्रह का थ्रेड-सेफ कार्यान्वयन। |
| 6 | IProducerConsumerCollection<T> वह इंटरफ़ेस जिसे किसी प्रकार को BlockingCollection में उपयोग किए जाने के लिए लागू करना होगा। |
आइए देखें कि ConcurrentStack<T> के साथ कैसे काम करें जो एक थ्रेड-सेफ लास्ट-इन-फर्स्ट-आउट (LIFO) संग्रह है।
एक ConcurrentStack बनाएं।
ConcurrentStacks = new ConcurrentStack ();
तत्व जोड़ें
s.Push(1); s.Push(2); s.Push(3); s.Push(4); s.Push(5); s.Push(6);
आइए एक उदाहरण देखें
उदाहरण
using System;
using System.Collections.Concurrent;
class Demo{
static void Main (){
ConcurrentStack s = new ConcurrentStack();
s.Push(50);
s.Push(100);
s.Push(150);
s.Push(200);
s.Push(250);
s.Push(300);
if (s.IsEmpty){
Console.WriteLine("The stack is empty!");
}
else {
Console.WriteLine("The stack isn't empty");
}
}
}