मैं सी # में निम्नलिखित की तरह कुछ है:,नेट धागा सुरक्षित कैश्ड परिणाम
private double _x;
private bool _xCalculated;
private double GetX() {
if (!_xCalculated) {
_x = ... // some relatively expensive calculation
_xCalculated = true;
}
return _x;
}
मेरा प्रश्न है इस सूत्र के लिए सुरक्षित है? जहां तक मैं कह सकता हूं, इसका सबसे बुरा परिणाम यह है कि दो या दो से अधिक धागे एक ही समय में इस विधि में प्रवेश करते हैं और _x
कई बार गणना करते हैं, लेकिन परिणाम इस वर्ग के किसी भी उदाहरण के लिए समान होने की गारंटी है, इसलिए यह नहीं है एक विशेष रूप से बड़ी समस्या है।
क्या यह मेरी सही समझ है?
। क्यों लगता है कि हार्डवेयर एक्स कैसे काम कर सकता है, जब कोई लॉक सरल, स्पष्ट, गारंटीकृत नहीं है और प्रदर्शन अंतर के बारे में बात करने योग्य नहीं है, तो हार्डवेयर एक्स कैसे काम कर सकता है? – smirkingman
मैं अपने उद्देश्यों के लिए सर्वोत्तम कार्यान्वयन खोजने के लिए प्रदर्शन परीक्षण कर रहा हूं, लेकिन मैं जानना चाहता था कि यह समाधान शुरू करने के लिए मान्य है या नहीं। – derkyjadex
आपके समाधान के साथ समस्या यह है कि यह जानना बहुत मुश्किल है कि यह सही है या नहीं। और चूंकि थ्रेडिंग मुद्दे गैर निर्धारक हैं, इसलिए आप इसका परीक्षण भी नहीं कर सकते हैं। – CodesInChaos