.NET Framework 4 लाया System.Collections.Concurrent नेमस्पेस। इसमें कई संग्रह क्लास हैं जो थ्रेड-सेफ और स्केलेबल हैं। इन संग्रहों को समवर्ती संग्रह (concurrent collections) कहा जाता है क्योंकि उन पर एक साथ कई थ्रेड द्वारा पहुँचा जा सकता है।
निम्नलिखित समवर्ती संग्रह प्रकार हल्के सिंक्रनाइज़ेशन तंत्र का उपयोग करते हैं: SpinLock, SpinWait, आदि। ये .NET Framework 4 में नए हैं।
आइए C# में समवर्ती संग्रह देखें:
| प्रकार | विवरण |
|---|---|
| BlockingCollection<T> | किसी भी प्रकार के लिए बाउंडिंग और ब्लॉकिंग कार्यक्षमता। |
| ConcurrentDictionary<TKey,TValue> | की-वैल्यू जोड़े के शब्दकोश का थ्रेड-सेफ कार्यान्वयन। |
| ConcurrentQueue<T> | FIFO (फर्स्ट-इन, फर्स्ट-आउट) कतार का थ्रेड-सेफ कार्यान्वयन। |
| ConcurrentStack<T> | LIFO (लास्ट-इन, फर्स्ट-आउट) स्टैक का थ्रेड-सेफ कार्यान्वयन। |
| ConcurrentBag<T> | तत्वों के अनऑर्डर्ड संग्रह का थ्रेड-सेफ कार्यान्वयन। |
| IProducerConsumerCollection<T> | वह इंटरफ़ेस जिसे किसी प्रकार को BlockingCollection में उपयोग के लिए लागू करना होगा। |
आइए देखें कि ConcurrentStack<T> के साथ कैसे काम करें जो एक थ्रेड-सेफ लास्ट-इन-फर्स्ट-आउट (LIFO) संग्रह है:
ConcurrentStack<int> cs = new ConcurrentStack<int>(); cs.Push(95); cs.Push(120); cs.Push(130);