C#-এ Queue.IsSynchronized প্রপার্টি একটি মান প্রদান করে যা নির্দেশ করে Queue-এ অ্যাক্সেস সিঙ্ক্রোনাইজড (thread-safe) কিনা। এটি একটি রিড-অনলি (read-only) প্রপার্টি।
সিনট্যাক্স (Syntax)
public virtual bool IsSynchronized { get; }
উদাহরণ ১: ইন্টিজার Queue-এর সিঙ্ক্রোনাইজড অবস্থা যাচাই
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
উদাহরণ ২: Queue সিঙ্ক্রোনাইজ করা এবং যাচাই
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()স্ট্যাটিক মেথড কল করে একটি থ্রেড-সেফ র্যাপার তৈরি করা যায়।- সিঙ্ক্রোনাইজড র্যাপারের
IsSynchronizedপ্রপার্টিtrueরিটার্ন করে। - মাল্টি-থ্রেডেড এনভায়রনমেন্টে Queue শেয়ার করার সময় সিঙ্ক্রোনাইজড সংস্করণ ব্যবহার করা উচিত।