ThreadStatic attribute अद्वितीय-प्रति-थ्रेड के रूप में स्थिर चर घोषित करता है। क्या आप इस तरह के चर का सही ढंग से निपटान करने के लिए एक आसान पैटर्न जानते हैं?थ्रेडस्टैटिक ऑब्जेक्ट्स का निर्धारण निपटान
थ्रेडस्टैटिक से पहले हमने जो भी उपयोग किया था वह थ्रेड कॉन्टेक्स्ट मैनेजर है। प्रत्येक थ्रेड को थ्रेडकॉन्टेक्स्ट आवंटित किया गया था जो सभी थ्रेड-विशिष्ट जानकारी को बनाए रखता था। हमने कुछ धागे पैदा किए और उन्हें काम करने दिया। फिर, जब वे सब खत्म हो गए, तो हमने थ्रेडकंटेंट मैनेजर का निपटारा किया, जिसने बदले में सभी संदर्भों का निपटारा किया, यदि वे पहचान योग्य थे।
मुझे इस पैटर्न को थ्रेडस्टैटिक ऑब्जेक्ट्स में अनुवाद करने का तत्काल तरीका दिखाई नहीं देता है। वस्तुओं को अंततः निपटाया जाएगा, क्योंकि धागे मर जाते हैं, और इसलिए कुछ भी उन्हें संदर्भित नहीं करता है। हालांकि, जब भी संभव हो हम निर्धारक निपटान पसंद करते हैं।
अद्यतन
मैं वास्तव में धागे सीधे नियंत्रित नहीं करते हैं - मैं माइक्रोसॉफ्ट सीसीआर है, जो एक ThreadPool कि कार्य करता है का उपयोग कर रहा हूँ। जब सभी कार्य किए जाते हैं, तो मैं डिस्पैचर का निपटारा कर रहा हूं (जिसमें थ्रेडपूल है)। बात यह है कि - मुझे धागे के मुख्य कार्य के अंत में कुछ भी करने का मौका नहीं मिलता है - इसलिए मैं थ्रेड के रन के अंत में मैन्युअल रूप से चीजों का निपटान नहीं कर सकता। क्या मैं थ्रेड के बाहर से धागे की स्थैतिक वस्तुओं को किसी भी तरह से एक्सेस कर सकता हूं?
मैं प्रत्येक कार्य के बाद सफाई करना नहीं चाहता हूं। मेरे थ्रेडपूल में दिया गया कोई भी थ्रेड अनुक्रमिक रूप से कई कार्य करता है। संदर्भ में इसका कारण है प्रति कार्य डेटा संरचनाओं के महंगे आवंटन को बचाने के लिए। इसका मतलब है कि सभी थ्रेड समाप्त होने के बाद ही मैं केवल सफाई कर सकता हूं। – ripper234