C# में Queue.IsSynchronized प्रॉपर्टी यह जांचने के लिए उपयोग की जाती है कि कतार (Queue) तक पहुंच सिंक्रोनाइज्ड (थ्रेड-सेफ) है या नहीं। यह एक बूलियन मान लौटाती है: true यदि कतार सिंक्रोनाइज्ड है, अन्यथा false।
सिंटैक्स
public virtual bool IsSynchronized { get; }
उदाहरण 1: डिफ़ॉल्ट कतार की सिंक्रोनाइजेशन जांच
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);
queue.Enqueue(400);
queue.Enqueue(500);
queue.Enqueue(600);
queue.Enqueue(700);
queue.Enqueue(800);
queue.Enqueue(900);
queue.Enqueue(1000);
Console.WriteLine("Queue...");
IEnumerator demoEnum = queue.GetEnumerator();
while (demoEnum.MoveNext()) {
Console.WriteLine(demoEnum.Current);
}
Console.WriteLine("Is Queue synchronized? = " + queue.IsSynchronized);
}
}
आउटपुट
Queue... 100 200 300 400 500 600 700 800 900 1000 Is Queue synchronized? = False
उदाहरण 2: Synchronized() मेथड से थ्रेड-सेफ कतार बनाना
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("Is Queue synchronized? = " + queue.IsSynchronized);
// सिंक्रोनाइज्ड वर्जन बनाएं
Queue queue2 = Queue.Synchronized(queue);
Console.WriteLine("Is Queue synchronized now? = " + queue2.IsSynchronized);
}
}
आउटपुट
Queue... AB BC CD DE EF FG GH HI Is Queue synchronized? = False Is Queue synchronized now? = True
महत्वपूर्ण बिंदु
- डिफ़ॉल्ट रूप से
Queueक्लास थ्रेड-सेफ नहीं होती (IsSynchronized = false)। Queue.Synchronized(queue)मेथड एक थ्रेड-सेफ व्रैपर लौटाता है।- मल्टी-थ्रेडेड वातावरण में सिंक्रोनाइज्ड कतार का उपयोग करें।
- जेनेरिक
Queue<T>मेंIsSynchronizedप्रॉपर्टी नहीं होती; इसके लिए मैन्युअल लॉकिंग आवश्यक है।
थ्रेड-सेफ कतार के लिए विकल्प
.NET 4.0+ में System.Collections.Concurrent.ConcurrentQueue<T> क्लास अंतर्निहित थ्रेड-सेफ्टी प्रदान करती है और इसे प्राथमिकता दी जाती है।