C# में Array.IsSynchronized प्रॉपर्टी
Array.IsSynchronized एक बूलियन प्रॉपर्टी है जो इंगित करती है कि क्या एरे पर एक्सेस सिंक्रनाइज़्ड (थ्रेड-सेफ) है। मानक एरे के लिए यह हमेशा false लौटाती है।
सिंटैक्स
public bool IsSynchronized { get; }
उदाहरण
using System;
using System.Collections.Generic;
using System.Linq;
class Program {
static void Main() {
Array arr = new int[] { 2, 1, 9, 4, 8, 6, 8 };
Console.WriteLine($"IsSynchronized: {arr.IsSynchronized}"); // False
// थ्रेड-सेफ एन्यूमरेशन के लिए SyncRoot पर लॉक लें
lock (arr.SyncRoot) {
foreach (object val in arr) {
Console.WriteLine(val);
}
}
}
}
आउटपुट
IsSynchronized: False 2 1 9 4 8 6 8
मुख्य बिंदु
IsSynchronizedICollectionइंटरफेस के अनुपालन के लिए लागू की गई है।- मानक .NET एरे आंतरिक रूप से सिंक्रनाइज़्ड नहीं हैं; यह हमेशा
falseलौटाता है। - थ्रेड सेफ्टी के लिए
SyncRootप्रॉपर्टी परlockका उपयोग करें (जैसा ऊपर दिखाया गया)। - कस्टम कलेक्शन क्लासेस
IsSynchronizedकोtrueलौटाने और आंतरिक सिंक्रनाइज़ेशन प्रदान करने के लिए ओवरराइड कर सकती हैं। - आधुनिक कोड के लिए
System.Collections.Concurrentनेमस्पेस (ConcurrentBag,ConcurrentQueue,ConcurrentDictionary) का उपयोग करें जो लॉक-फ्री थ्रेड-सेफ ऑपरेशन्स देते हैं।
IsSynchronized vs SyncRoot
| प्रॉपर्टी | उद्देश्य | मानक एरे के लिए मान |
|---|---|---|
IsSynchronized | क्या एरे थ्रेड-सेफ है? | false |
SyncRoot | सिंक्रनाइज़ेशन के लिए लॉक ऑब्जेक्ट | एरे इंस्टेंस स्वयं |