मैं बहुत की तरह एक स्थानीय चर है:थ्रेड सुरक्षा और स्थानीय चर
Increment()
{
int i = getFromDb(); // get count for a customer from db
};
और यह एक उदाहरण वर्ग जो वृद्धि हो जाता है (जब भी कोई ग्राहक - एक उदाहरण वस्तु - कोई खरीदारी करता है), यह है परिवर्तनीय धागा सुरक्षित? मैंने सुना है कि स्थानीय चर धागे सुरक्षित हैं क्योंकि प्रत्येक धागे का अपना ढेर इत्यादि हो जाता है।
साथ ही, क्या मैं सोच रहा हूं कि यह चर साझा राज्य है? मुझे सोचने की कमी में कमी है कि यह चर अलग-अलग ग्राहक वस्तुओं (जैसे जॉन, पॉल इत्यादि) के साथ काम करेगा, इसलिए थ्रेड सुरक्षित है लेकिन यह समरूप प्रोग्रामिंग में त्रुटिपूर्ण सोच और अनुभवहीनता है। यह बहुत बेवकूफ लगता है, लेकिन फिर मुझे समवर्ती कोडिंग में बहुत अधिक अनुभव नहीं है जैसे कि मैं सामान्य रूप से, सिंक्रोनस कोडिंग करता हूं।
संपादित करें: साथ ही, फ़ंक्शन कॉल प्राप्त करें FromDb() प्रश्न का हिस्सा नहीं है और मुझे उम्मीद है कि किसी को भी अपनी थ्रेड सुरक्षा पर अनुमान लगाने की उम्मीद नहीं है क्योंकि यह संकेत है कि मूल्य को उस फ़ंक्शन से असाइन किया गया है जो इंगित करता है डीबी से डेटा। :)
संपादित 2: इसके अलावा, getFromDb की थ्रेड सुरक्षा की गारंटी है क्योंकि यह केवल पढ़ने के संचालन करता है।
पूर्णता के लिए +1 (एनन विधियों और इटरेटर ब्लॉक की चर्चा। स्टेटिक कक्षाएं और थ्रेड सुरक्षा व्यक्तिगत रूप से समझने की सबसे आसान अवधारणा है। :) – dotnetdev
आईएमएचओ, यह स्पष्ट करना महत्वपूर्ण है कि सूचीबद्ध अपवादों में भी, स्थानीय चर विधि के लिए प्रत्येक कॉल के लिए _still_ अद्वितीय है। यही है, जबकि उन्हें विधि के संदर्भ में भी पहुंचा जा सकता है, यहां तक कि संभावित रूप से गैर-थ्रेड-सुरक्षित तरीके से भी, वे _dif_ स्थानीय चर के सापेक्ष थ्रेड-सुरक्षित होंगे, उसी विधि में _different_ कॉल के संदर्भ में । –