Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C#

C# में थ्रेड-सेफ समवर्ती संग्रह


.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 बनाएं।

ConcurrentStack s = 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");
        }
    }
}

  1. - Java में फेल-फास्ट और फेल-सेफ के बीच अंतर

    क्र. सं. मुख्य बिंदु फेल-फास्ट फेल-सेफ 1 अपवाद थ्रेड के इटरेट करते समय कलेक्शन में कोई भी परिवर्तन, जैसे जोड़ना, हटाना और अपडेट करना, तो फेल-फास्ट ConcurrentModificationException फेंकता है। फेल-सेफ कलेक्शन अपवाद नहीं फेंकता। 2. कलेक्शन का प्रकार ArrayList और HashMap कलेक्शन फेल-फास्ट इटरेट

  1. - Java में कलेक्शन को थ्रेड-सेफ कैसे बनाएं?

    java.util.Collections क्लास विभिन्न कलेक्शन प्रकारों के लिए थ्रेड-सेफ (सिंक्रोनाइज़्ड) रैपर प्रदान करने के लिए स्थैतिक विधियाँ प्रदान करती है।मुख्य विधियाँक्र.सं.विधि और विवरण1static <T> Collection<T> synchronizedCollection(Collection<T> c)निर्दिष्ट कलेक्शन द्वारा समर्थित एक सिंक्र

  1. - क्या आपको लगता है कि पायथन डिक्शनरी थ्रेड-सेफ है?

    हां, पायथन डिक्शनरी थ्रेड-सेफ है। वास्तव में, पायथन में सभी बिल्ट-इन थ्रेड-सेफ हैं। आप इसके बारे में डॉक्यूमेंटेशन में अधिक पढ़ सकते हैं: https://docs.python.org/3/glossary.html#term-global-interpreter-lock