जबकि मैं अपने ढांचे के समानांतरता पर काम कर रहा हूं, मैंने एक अजीब स्थिति का सामना किया है जिसे मैं कल्पना नहीं कर सकता! मैंने स्थिति को आसान बनाने के लिए स्थिति को सरल बना दिया।एक स्थानीय थ्रेड के माध्यम से एक अन्य थ्रेड के माध्यम से, यह संभव है कि
foreach(var person in personList)
{
if (person.Name == "Mehran")
break;
}
जो personList
से अधिक थ्रेड के बीच साझा किया जाता है: इस कोड पर विचार करें।
person
के लिए null
होने के लिए कौन सी परिस्थितियों में यह संभव है और person.Name
के लिए मुझे NullReferenceException
मिल गया है?
मुझे पता है के रूप में, व्यक्ति एक स्थानीय चर यहाँ के रूप में माना जाता है और अगर हम foreach
ब्लॉक में हो, तो हम personList
सफलतापूर्वक दोहराया है, तो person
किसी भी परिस्थिति या किसी समानांतर स्थिति में शून्य नहीं होना चाहिए।
भले ही personList
किसी अन्य थ्रेड द्वारा बदला गया हो, या संदर्भित person
का निपटारा किया गया है, person
चर का मूल्य होना चाहिए। क्योंकि किसी को भी बदलने की सुविधा नहीं है जहां person
का संदर्भ दिया गया है।
क्या स्थिति की व्याख्या करने के लिए यह कोई परिदृश्य है?
Wooops! सूचियां नल स्वीकार कर सकते हैं! समांतर स्थितियों ने मुझे आवश्यक से अधिक जटिल लगता है! बहुत बहुत धन्यवाद जॉन। – mehrandvd
हाँ, मुझे समांतर स्थितियों में सूची संशोधन समस्याओं के बारे में पता है। मुझे लगता है कि आपका सरल और त्वरित उत्तर इसे हल करेगा। मैं सूची में संभावित नल की जांच करूंगा। – mehrandvd