Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C#

C# में Queue.Synchronized() मेथड - थ्रेड-सेफ क्यू बनाएं

परिचय

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 प्रॉपर्टी इंगित करती है कि क्यू थ्रेड-सेफ है या नहीं।
  1. - C# में SequenceEqual मेथड

    SequenceEqual मेथड का उपयोग संग्रहों की समानता के लिए परीक्षण करने के लिए किया जाता है।आइए तीन स्ट्रिंग सरणियाँ सेट करें:string[] arr1 = { "This", "is", "it" }; string[] arr2 = { "My", "work", "report" }; string[] arr3 = { "This",

  1. - C# में Aggregate() मेथड का उपयोग

    C# में Aggregate() मेथड का उपयोग किसी अनुक्रम पर संचयी संक्रिया (cumulative operation) करने के लिए किया जाता है। यह गणितीय संक्रियाओं जैसे योग (Sum), न्यूनतम (Min), अधिकतम (Max), औसत (Average), गुणनफल (Product) आदि के लिए उपयोगी है। उदाहरण: सरणी के तत्वों का गुणनफल मान लीजिए हमारे पास निम्न सरणी ह

  1. - C# में TakeWhile() मेथड का उपयोग

    C# में TakeWhile() मेथड System.Linq नेमस्पेस का एक एक्सटेंशन मेथड है जो किसी अनुक्रम से तब तक तत्व लौटाता है जब तक कि निर्दिष्ट शर्त (predicate) सत्य रहती है। जैसे ही शर्त असत्य होती है, तत्वों को लेना बंद कर दिया जाता है। उदाहरण मान लीजिए हमारे पास निम्न सरणी है: int[] arr = { 25, 40, 65, 70 };