परिचय
C# में Queue.Synchronized() मेथड मूल क्यू को लपेटने वाला एक नया थ्रेड-सेफ (सिंक्रोनाइज़्ड) Queue वापस करता है। यह मल्टी-थ्रेडेड वातावरण में सुरक्षित पहुंच सुनिश्चित करता है।
सिंटैक्स
public static System.Collections.Queue Synchronized(System.Collections.Queue queue);
queue सिंक्रोनाइज़ किया जाने वाला क्यू है।
उदाहरण 1: सिंक्रोनाइज़ेशन जांच
using System;
using System.Collections;
public class Demo {
public static void Main() {
Queue queue = new Queue();
queue.Enqueue("AB");
queue.Enqueue("BC");
queue.Enqueue("CD");
queue.Enqueue("DE");
queue.Enqueue("EF");
queue.Enqueue("FG");
queue.Enqueue("GH");
queue.Enqueue("HI");
Console.WriteLine("Queue...");
IEnumerator demoEnum = queue.GetEnumerator();
while (demoEnum.MoveNext()) {
Console.WriteLine(demoEnum.Current);
}
Console.WriteLine("क्या Queue सिंक्रोनाइज़्ड है? = " + queue.IsSynchronized);
Queue queue2 = Queue.Synchronized(queue);
Console.WriteLine("क्या Queue अब सिंक्रोनाइज़्ड है? = " + queue2.IsSynchronized);
}
}
आउटपुट
Queue... AB BC CD DE EF FG GH HI क्या Queue सिंक्रोनाइज़्ड है? = False क्या Queue अब सिंक्रोनाइज़्ड है? = True
उदाहरण 2: कॉपी और अन्य ऑपरेशन्स
using System;
using System.Collections;
public class Demo {
public static void Main() {
Queue queue = new Queue();
queue.Enqueue(100);
queue.Enqueue(200);
queue.Enqueue(300);
Console.WriteLine("क्या Queue सिंक्रोनाइज़्ड है? = " + queue.IsSynchronized);
Queue queue2 = Queue.Synchronized(queue);
Console.WriteLine("क्या Queue अब सिंक्रोनाइज़्ड है? = " + queue2.IsSynchronized);
Console.Write("तत्वों की संख्या = ");
Console.WriteLine(queue.Count);
Console.WriteLine("Queue...");
foreach (int i in queue) {
Console.WriteLine(i);
}
Console.WriteLine("क्या क्यू में 500 है? = " + queue.Contains(500));
int[] intArr = new int[5];
intArr[0] = 1;
intArr[1] = 2;
intArr[2] = 3;
intArr[3] = 4;
queue.CopyTo(intArr, 1);
Console.WriteLine("\nQueue (अपडेटेड)");
foreach (int i in queue) {
Console.WriteLine(i);
}
Console.WriteLine("\nऐरे (अपडेटेड)");
foreach (int i in intArr) {
Console.WriteLine(i);
}
}
}
आउटपुट
क्या Queue सिंक्रोनाइज़्ड है? = False क्या Queue अब सिंक्रोनाइज़्ड है? = True तत्वों की संख्या = 3 Queue... 100 200 300 क्या क्यू में 500 है? = False Queue (अपडेटेड) 100 200 300 ऐरे (अपडेटेड) 1 100 200 300 0
महत्वपूर्ण नोट्स
- केवल गैर-जेनेरिक
System.Collections.Queueके लिए उपलब्ध है। - जेनेरिक
Queue<T>थ्रेड-सेफ नहीं है और इसका कोईSynchronizedमेथड नहीं है। - आधुनिक .NET में
ConcurrentQueue<T>(System.Collections.Concurrent) लॉक-फ्री थ्रेड-सेफ क्यू के लिए पसंदीदा है। - सिंक्रोनाइज़्ड रैपर प्रत्येक ऑपरेशन पर लॉक करता है - उच्च प्रतिस्पर्धा में प्रदर्शन प्रभाव हो सकता है।
IsSynchronizedप्रॉपर्टी इंगित करती है कि क्यू थ्रेड-सेफ है या नहीं।