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

C#-এ Stack.Synchronized() মেথড


C#-এ Stack.Synchronized() মেথডটি একটি Stack-এর জন্য সিঙ্ক্রোনাইজড (thread-safe) র্যাপার (wrapper) রিটার্ন করতে ব্যবহৃত হয়। এটি মাল্টি-থ্রেডেড এনভায়রনমেন্টে Stack-এ নিরাপদে অ্যাক্সেস নিশ্চিত করে।

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

public static System.Collections.Stack Synchronized (System.Collections.Stack stack);

এখানে, stack প্যারামিটারটি হল সিঙ্ক্রোনাইজ করার জন্য Stack অবজেক্ট।

উদাহরণ ১: ইন্টিজার 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 সিঙ্ক্রোনাইজ করা

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); 
        stack.Push("Ultrabook"); 
        stack.Push("Cameras"); 
        stack.Push("Keyboards"); 
        Console.WriteLine("\nStack elements...updated"); 
        foreach(string val in stack) { 
            Console.WriteLine(val); 
        } 
        Console.WriteLine("\nCount of elements (updated) = " + stack.Count); 
        Console.WriteLine("Is the Stack synchronized? = " + stack.IsSynchronized); 
        Stack stack2 = Stack.Synchronized(stack); 
        Console.WriteLine("Is the Stack synchronized? = " + stack2.IsSynchronized); 
    } 
}

আউটপুট

Stack elements... 
Notebook 
Laptop 
XPS 
Monitors 
Projectors 
Alienware 
Inspiron 
Count of elements = 7 
Stack elements...updated 
Keyboards 
Cameras 
Ultrabook 
Notebook 
Laptop 
XPS 
Monitors 
Projectors 
Alienware 
Inspiron 
Count of elements (updated) = 10 
Is the Stack synchronized? = False 
Is the Stack synchronized? = True

মূল পয়েন্টস

  • Stack.Synchronized() একটি থ্রেড-সেফ (thread-safe) র্যাপার রিটার্ন করে যা একসাথে একাধিক থ্রেড থেকে Stack-এ অ্যাক্সেস নিরাপদ করে।
  • মূল Stack অবজেক্টটি থ্রেড-সেফ নয় (IsSynchronized প্রপার্টি false রিটার্ন করে)।
  • সিঙ্ক্রোনাইজড র্যাপার ব্যবহার করার পর IsSynchronized প্রপার্টি true রিটার্ন করে।
  • মাল্টি-থ্রেডেড অ্যাপ্লিকেশনে Stack শেয়ার করার সময় এই মেথডটি অত্যন্ত গুরুত্বপূর্ণ।
  1. C# তে ContainsKey() পদ্ধতি

  2. সি শার্পে SequenceEqual মেথড

  3. C#-এ Aggregate মেথড

  4. C#-এ TakeWhile মেথড