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

C# में Stack.IsSynchronized प्रॉपर्टी


C# में Stack.IsSynchronized प्रॉपर्टी यह जांचने के लिए उपयोग की जाती है कि स्टैक तक पहुंच सिंक्रोनाइज्ड (थ्रेड-सेफ) है या नहीं। यह एक बूलियन मान लौटाती है।

सिंटैक्स

public virtual bool IsSynchronized { get; }

उदाहरण 1: डिफ़ॉल्ट स्टैक की सिंक्रोनाइजेशन जांच

using System; 
using System.Collections; 

public class Demo { 
    public static void Main() { 
        Stack stack = new Stack(); 
        stack.Push("Inspiron");
        stack.Push("Alienware");
        stack.Push("Projectors");
        stack.Push("Monitors");
        stack.Push("XPS");
        stack.Push("Laptop");
        stack.Push("Notebook");
        
        Console.WriteLine("Stack elements...");
        foreach(string val in stack) {
            Console.WriteLine(val);
        }
        Console.WriteLine("Count of elements = " + stack.Count);
        Console.WriteLine("Element Speakers in stack? = " + stack.Contains("Speakers"));
        
        stack.Push("Headphone");
        stack.Push("Keyboard");
        stack.Push("Earphone");
        
        Console.WriteLine("\nStack elements...updated");
        foreach(string val in stack) {
            Console.WriteLine(val);
        }
        Console.WriteLine("Count of elements (updated) = " + stack.Count);
        Console.WriteLine("\nElement Alienware in stack? = " + stack.Contains("Alienware"));
        Console.WriteLine("Is the Stack synchronized? = " + stack.IsSynchronized);
        
        Stack stack2 = (Stack)stack.Clone();
        Console.WriteLine("\nStack elements...cloned");
        IEnumerator demoEnum = stack2.GetEnumerator();
        while (demoEnum.MoveNext()) {
            Console.WriteLine(demoEnum.Current);
        }
        Console.WriteLine("Count of elements (updated) = " + stack.Count);
    } 
}

आउटपुट

Stack elements...
Notebook
Laptop
XPS
Monitors
Projectors
Alienware
Inspiron
Count of elements = 7
Element Speakers in stack? = False

Stack elements...updated
Earphone
Keyboard
Headphone
Notebook
Laptop
XPS
Monitors
Projectors
Alienware
Inspiron
Count of elements (updated) = 10
Element Alienware in stack? = True
Is the Stack synchronized? = False
Stack elements...cloned
Earphone
Keyboard
Headphone
Notebook
Laptop
XPS
Monitors
Projectors
Alienware
Inspiron
Count of elements (updated) = 10

उदाहरण 2: Synchronized() मेथड से थ्रेड-सेफ स्टैक बनाना

using System; 
using System.Collections; 

public class Demo { 
    public static void Main() { 
        Stack stack = new Stack(); 
        stack.Push(150);
        stack.Push(300);
        stack.Push(500);
        stack.Push(750);
        stack.Push(1000);
        stack.Push(1250);
        stack.Push(1500);
        stack.Push(2000);
        stack.Push(2500);
        
        Console.WriteLine("Stack elements...");
        foreach(int val in stack) {
            Console.WriteLine(val);
        }
        Console.WriteLine("Count of elements = " + stack.Count);
        Console.WriteLine("Element 750 in stack? = " + stack.Contains(750));
        
        stack.Push(3000);
        Console.WriteLine("\nStack elements...updated");
        foreach(int val in stack) {
            Console.WriteLine(val);
        }
        Console.WriteLine("Count of elements (updated) = " + stack.Count);
        Console.WriteLine("Element 5000 in stack? = " + stack.Contains(5000));
        
        Stack stack2 = (Stack)stack.Clone();
        Console.WriteLine("\nStack elements...cloned");
        foreach(int val in stack2) {
            Console.WriteLine(val);
        }
        Console.Write("Count of elements (stack2) = " + stack2.Count);
        Console.WriteLine("Is the Stack synchronized? = " + stack.IsSynchronized);
        
        // सिंक्रोनाइज्ड वर्जन बनाएं
        Stack stack3 = Stack.Synchronized(stack);
        Console.WriteLine("Is the Stack synchronized? = " + stack3.IsSynchronized);
    } 
}

आउटपुट

Stack elements...
2500
2000
1500
1250
1000
750
500
300
150
Count of elements = 9
Element 750 in stack? = True

Stack elements...updated
3000
2500
2000
1500
1250
1000
750
500
300
150
Count of elements (updated) = 10
Element 5000 in stack? = False

Stack elements...cloned
3000
2500
2000
1500
1250
1000
750
500
300
150
Count of elements (stack2) = 10
Is the Stack synchronized? = False
Is the Stack synchronized? = True

महत्वपूर्ण बिंदु

  • डिफ़ॉल्ट Stack थ्रेड-सेफ नहीं है (IsSynchronized = false)।
  • Stack.Synchronized(stack) एक सिंक्रोनाइज्ड व्रैपर लौटाता है।
  • सिंक्रोनाइज्ड व्रैपर केवल व्यक्तिगत ऑपरेशंस को थ्रेड-सेफ बनाता है; कंपाउंड ऑपरेशंस के लिए मैन्युअल लॉकिंग अभी भी आवश्यक है।
  • जेनेरिक Stack<T> में IsSynchronized नहीं होता; lock या ConcurrentStack<T> उपयोग करें।

आधुनिक विकल्प

.NET 4.0+ में System.Collections.Concurrent.ConcurrentStack<T> अंतर्निहित थ्रेड-सेफ्टी प्रदान करता है और बेहतर प्रदर्शन देता है।

  1. C# में Console.KeyAvailable() प्रॉपर्टी C# में Console.KeyAvailable() प्रॉपर्टी

    C# में Console.KeyAvailable() प्रॉपर्टी का उपयोग यह दर्शाने वाला मान प्राप्त करने के लिए किया जाता है कि क्या इनपुट स्ट्रीम में कोई कुंजी दबाने की घटना उपलब्ध है। सिंटैक्स सिंटैक्स निम्नलिखित है: public static bool KeyAvailable { get; } उदाहरण आइए अब C# में Console.KeyAvailable() प्रॉपर्टी को लागू

  1. C# में Console क्लास C# में Console क्लास

    C# में Console क्लास का उपयोग कंसोल एप्लिकेशन के लिए मानक इनपुट, आउटपुट और त्रुटि स्ट्रीम को दर्शाने के लिए किया जाता है। आइए C# में Console क्लास प्रॉपर्टीज के कुछ उदाहरण देखते हैं: Console.CursorLeft प्रॉपर्टी C# में कंसोल का CursorLeft बदलने के लिए Console.CursorLeft प्रॉपर्टी का उपयोग करें। उदा

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

    Stack क्लास में कितने एलिमेंट्स जोड़े गए हैं, यह जानने के लिए आपको Count गुण का उपयोग करना होगा।आइए पहले स्टैक में एलिमेंट्स जोड़ें:Stack st = new Stack(); st.Push(H); st.Push(I); st.Push(J); st.Push(K); st.Push(L); st.Push(M); st.Push(N); st.Push(O);अब स्टैक में एलिमेंट्स की संख्या गिनें:Console.Wr