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

C#-এ অ্যারে-এ সিঙ্ক্রোনাইজড অ্যাক্সেস পাওয়া

C#-এ প্রতিটি অ্যারে একটি SyncRoot প্রপার্টি 갖고 যা লকে জন্য ব্যবহার করা যায়। lock(array.SyncRoot) দিয়ে মাল্টি-থ্রেডেড পরিস্থিতিতে অ্যারে সেফলি অ্যাক্সেস করা যায়।

উদাহরণ ১: ইন্টিজার অ্যারে সিঙ্ক্রোনাইজ করা

using System;

public class Demo {
    public static void Main() {
        Array intArr = new int[] {5, 10, 15, 20, 25, 30, 35, 40};

        Console.WriteLine("Integer array...");
        foreach (int i in intArr)
            Console.WriteLine(i);

        Console.WriteLine("After applying lock on array...");
        lock(intArr.SyncRoot) {
            foreach (Object ob in intArr)
                Console.WriteLine(ob);
        }
    }
}

আউটপুট

Integer array...
5
10
15
20
25
30
35
40
After applying lock on array...
5
10
15
20
25
30
35
40

উদাহরণ ২: স্ট্রিং অ্যারে সিঙ্ক্রোনাইজ করা

using System;

public class Demo {
    public static void Main() {
        Array strArr = new String[] {"Harry", "Tom", "Kevin", "Ryan", "Katie", "Amy"};

        Console.WriteLine("String array...");
        foreach (string i in strArr)
            Console.WriteLine(i);

        Console.WriteLine("After applying lock on array...");
        lock(strArr.SyncRoot) {
            foreach (Object ob in strArr)
                Console.WriteLine(ob);
        }
    }
}

আউটপুট

String array...
Harry
Tom
Kevin
Ryan
Katie
Amy
After applying lock on array...
Harry
Tom
Kevin
Ryan
Katie
Amy

মূল পয়েন্টস

  • সব অ্যারে System.Array থেকে উত্তরাধিকার পায়, যার মাঝে SyncRoot প্রপার্টি থাকে।
  • lock(arr.SyncRoot) কোবল ইটারেশনের সময় নয়, রিড/রাইট যেকোনো অপারেশনের সময় ব্যবহার করা উচিত।
  • জেনেরিক কালেকশনগুলো (List<T>, Dictionary<TKey,TValue> ইত্যাদি) SyncRoot এক্সপোজ করে না; সেখানে সরাসরি lock(collection) ব্যবহার করুন।
  1. ল্যাপটপে ৪জি বা ৩জি ইন্টারনেট এক্সেস পাওয়ার উপায়

  2. C#-এ মাল্টি-ডাইমেনশনাল অ্যারে থেকে এলিমেন্ট অ্যাক্সেস করার পদ্ধতি

  3. C#-এ জ্যাগড অ্যারে থেকে এলিমেন্ট অ্যাক্সেস করার পদ্ধতি

  4. C#-এ অ্যারে কীভাবে ঘোষণা করবেন?