কম্পিউটার টিউটোরিয়াল

C#-এ Stack.IsSynchronized প্রপার্টি


C#-এ Stack.IsSynchronized প্রপার্টি একটি মান প্রদান করে যা নির্দেশ করে Stack-এ অ্যাক্সেস সিঙ্ক্রোনাইজড (thread-safe) কিনা। এটি একটি রিড-অনলি (read-only) প্রপার্টি।

সিনট্যাক্স (Syntax)

public virtual bool IsSynchronized { get; }

উদাহরণ ১: Stack-এর সিঙ্ক্রোনাইজড অবস্থা যাচাই

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 is the 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 is the 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 is the stack? = False 
Stack elements...updated 
Earphone 
Keyboard 
Headphone 
Notebook 
Laptop 
XPS 
Monitors 
Projectors 
Alienware 
Inspiron 
Count of elements (updated) = 10 
Element Alienware is the 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

উদাহরণ ২: Stack সিঙ্ক্রোনাইজ করা এবং যাচাই

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 is the 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 is the 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 (updated) = " + 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 is the stack? = True 
Stack elements...updated 
3000 
2500 
2000 
1500 
1250 
1000 
750 
500 
300 
150 
Count of elements (updated) = 10 
Element 5000 is the stack? = False 
Stack elements...cloned 
3000 
2500 
2000 
1500 
1250 
1000 
750 
500 
300 
150 
Count of elements (updated) = 10 
Is the Stack synchronized? = False 
Is the Stack synchronized? = True

মূল পয়েন্টস

  • ডিফল্টভাবে Stack ক্লাস থ্রেড-সেফ নয় (IsSynchronized = false)।
  • Stack.Synchronized() স্ট্যাটিক মেথড কল করে একটি থ্রেড-সেফ র্যাপার তৈরি করা যায়।
  • সিঙ্ক্রোনাইজড র্যাপারের IsSynchronized প্রপার্টি true রিটার্ন করে।
  • মাল্টি-থ্রেডেড এনভায়রনমেন্টে Stack শেয়ার করার সময় সিঙ্ক্রোনাইজড সংস্করণ ব্যবহার করা উচিত।
  • Clone() মেথড একটি শ্যালো কপি (shallow copy) তৈরি করে, সিঙ্ক্রোনাইজড র্যাপার নয়।
  1. C# Console.KeyAvailable প্রোপার্টি

  2. C# Console ক্লাস

  3. C#-এ Array.IsSynchronized প্রোপার্টি কী কাজ করে?

  4. C#-এ Stack ক্লাসের Count প্রোপার্টি কী?