मैंने अभी इंटरलॉक क्लास के बारे में सीखा है और यह केवल लॉकिंग से तेज़ होना चाहिए। अब, यह सब अच्छा और अच्छा है, लेकिन मैं कार्यान्वयन के रूप में उत्सुक हूँ।इंटरलाक्ड काम कैसे करता है और यह लॉक से तेज़ क्यों है?
जहां तक मुझे पता है, यह सुनिश्चित करने का एकमात्र तरीका है कि एक चर पर ऑपरेशन परमाणु रूप से किया जाता है यह सुनिश्चित करने के लिए कि केवल एक ही थ्रेड किसी भी समय उस चर को एक्सेस कर सकता है। जो लॉक है।
मैं परावर्तक का उपयोग किया है Interlocked का स्रोत प्राप्त करने के लिए, लेकिन यह यह बाह्य विधि का उपयोग करता है अपने सभी काम करने के लिए लगता है:
[MethodImpl(MethodImplOptions.InternalCall), ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]
internal static extern int ExchangeAdd(ref int location1, int value);
मैं कुछ परीक्षण चला गया है, और Interlocked तथ्य दो बार है में जितनी जल्दी हो सके ऑब्जेक्ट को लॉक करें और इसे बढ़ाएं।
वे यह कैसे कर रहे हैं?
सीपीयू समर्थन .... – spender
आपका क्या मतलब है? –