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

C# में Stack के लिए सिंक्रनाइज़्ड एक्सेस प्राप्त करना

परिचय

Stack क्लास थ्रेड-सेफ नहीं है। मल्टी-थ्रेडेड वातावरण में सुरक्षित एक्सेस के लिए SyncRoot प्रॉपर्टी का उपयोग करके lock स्टेटमेंट के साथ सिंक्रनाइज़ेशन किया जाता है।

उदाहरण 1: पूर्णांक Stack पर सिंक्रनाइज़ेशन

using System;
using System.Collections;

public class Demo {
    public static void Main() {
        Stack stack = new Stack();
        stack.Push(100);
        stack.Push(200);
        stack.Push(300);
        stack.Push(400);
        stack.Push(500);

        Console.WriteLine("Stack...");
        foreach(Object ob in stack) {
            Console.WriteLine(ob);
        }

        Console.WriteLine("तत्वों की संख्या = " + stack.Count);

        Console.WriteLine("सिंक्रनाइज़्ड एक्सेस...");
        lock(stack.SyncRoot) {
            foreach(Object ob in stack) {
                Console.WriteLine(ob);
            }
        }
    }
}

आउटपुट

Stack...
500
400
300
200
100
तत्वों की संख्या = 5
सिंक्रनाइज़्ड एक्सेस...
500
400
300
200
100

उदाहरण 2: स्ट्रिंग Stack पर सिंक्रनाइज़ेशन

using System;
using System.Collections;

public class Demo {
    public static void Main() {
        Stack stack = new Stack();
        stack.Push("Jacob");
        stack.Push("Tim");
        stack.Push("Philips");
        stack.Push("Tom");
        stack.Push("Amy");
        stack.Push("Katie");
        stack.Push("Selena");
        stack.Push("Taylor");
        stack.Push("Justin");

        Console.WriteLine("Stack...");
        foreach(Object ob in stack) {
            Console.WriteLine(ob);
        }

        Console.WriteLine("\nसिंक्रनाइज़्ड एक्सेस...");
        lock(stack.SyncRoot) {
            foreach(Object ob in stack) {
                Console.WriteLine(ob);
            }
        }
    }
}

आउटपुट

Stack...
Justin
Taylor
Selena
Katie
Amy
Tom
Philips
Tim
Jacob
सिंक्रनाइज़्ड एक्सेस...
Justin
Taylor
Selena
Katie
Amy
Tom
Philips
Tim
Jacob

मुख्य बिंदु

  • SyncRoot एक ऑब्जेक्ट लौटाता है जिसका उपयोग सिंक्रनाइज़ेशन के लिए किया जा सकता है।
  • lock(SyncRoot) ब्लॉक के अंदर एन्यूमरेशन थ्रेड-सेफ होता है।
  • जेनेरिक Stack<T> में भी SyncRoot नहीं होता; मैन्युअल लॉकिंग आवश्यक है।
  1. - C# में Stack में निहित तत्वों की संख्या प्राप्त करें

    C# में Stack<T> में निहित तत्वों की संख्या प्राप्त करने के लिए, हम Count प्रॉपर्टी का उपयोग करते हैं। Stack एक LIFO (लास्ट-इन-फर्स्ट-आउट) संग्रह है जो System.Collections.Generic नेमस्पेस में स्थित है। तत्वों को Push() से जोड़ा जाता है और Pop() से हटाया जाता है। उदाहरण 1: Stack में तत्व गिनना

  1. - C# में Stack क्लास क्या है?

    Stack का उपयोग तब किया जाता है जब आपको आइटम्स की लास्ट-इन, फर्स्ट-आउट एक्सेस की आवश्यकता होती है। जब आप लिस्ट में एक आइटम जोड़ते हैं, तो इसे आइटम को पुश करना कहा जाता है और जब आप इसे हटाते हैं, तो इसे आइटम को पॉप करना कहा जाता है।आइए C# में Stack क्लास का एक उदाहरण देखें:सबसे पहले, Stack में एलिमेंट

  1. MacOS डॉक से हाल की फाइलों को त्वरित रूप से खोलें MacOS डॉक से हाल की फाइलों को त्वरित रूप से खोलें

    हाल के आइटम तक त्वरित पहुंच कुछ ऐसी है जो हर Mac यूजर चाहता है क्योंकि यह उन्हें तुरंत अपने पहले के अधूरे काम पर वापस जाने देता है। आप कल किसी ने जो PDF फाइल भेजी थी उसे पढ़ना जारी रखना चाह सकते हैं, या शायद आप उस कहानी को खत्म करना चाहते हैं जिसे आप कल रात अधूरा छोड़ गए थे। जब तक आप इन सभी फाइलों क