[ThreadStatic]
विशेषता का उपयोग करके परिभाषित किया गया है जबकि ThreadLocal<T>
जेनेरिक का उपयोग करता है। विभिन्न डिज़ाइन समाधान क्यों चुने गए थे? इस मामले में जेनेरिक ओवर विशेषताओं का उपयोग करने के फायदे और नुकसान क्या हैं?थ्रेडस्टैटिक बनाम। थ्रेडलोकल <T>: विशेषता से सामान्य सामान्य है?
उत्तर
टिप्पणियों में नोट किया गया ब्लॉग पोस्ट कुछ स्पष्ट नहीं करता है, लेकिन मुझे बहुत महत्वपूर्ण लगता है, [ThreadStatic]
स्वचालित रूप से प्रत्येक थ्रेड के लिए चीजों को प्रारंभ नहीं करता है। उदाहरण के लिए, आप यह कहते हैं:
[ThreadStatic]
private static int Foo = 42;
पहले धागा का उपयोग करता है इस Foo
42
के लिए शुरू देखेंगे। लेकिन बाद के धागे नहीं होंगे। प्रारंभकर्ता केवल पहले धागे के लिए काम करता है। तो आप यह जांचने के लिए कोड लिखना चाहते हैं कि यह प्रारंभ हुआ है या नहीं।
ThreadLocal<T>
आपको प्रारंभिक फ़ंक्शन (रीड के ब्लॉग शो के रूप में) की आपूर्ति करने के द्वारा उस समस्या को हल करता है जो आइटम को पहली बार एक्सेस होने से पहले चलाया जाता है।
मेरी राय में, ThreadLocal<T>
के बजाय [ThreadStatic]
का उपयोग करने का कोई फायदा नहीं है।
शायद ['थ्रेडलोकल
और यदि आप मान सेट करने के लिए प्रारंभकर्ताओं का उपयोग नहीं कर रहे हैं, लेकिन प्रारंभिक होने के बाद इसे बाद के बिंदु पर सेट कर रहे हैं, [थ्रेडस्टैटिक] का उपयोग करके वाक्य रचनात्मक रूप से क्लीनर है। – Thought
'[थ्रेडस्टैटिक] 'का कोड कोड में उस क्षेत्र के मौजूदा संदर्भों को बदलने के लिए लाभ नहीं है। – NextInLine
थ्रेडस्टैटिक केवल पहले थ्रेड पर प्रारंभ करें, थ्रेडलोकल प्रत्येक थ्रेड के लिए प्रारंभ करें।
public static ThreadLocal<int> _threadlocal =
new ThreadLocal<int>(() =>
{
return Thread.CurrentThread.ManagedThreadId;
});
public static void Main()
{
new Thread(() =>
{
for (int x = 0; x < _threadlocal.Value; x++)
{
Console.WriteLine("First Thread: {0}", x);
}
}).Start();
new Thread(() =>
{
for (int x = 0; x < _threadlocal.Value; x++)
{
Console.WriteLine("Second Thread: {0}", x);
}
}).Start();
Console.ReadKey();
}
दिलचस्प उदाहरण लेकिन मुझे बहाव मिलता है। – Eniola
ThreadStatic के पीछे मुख्य विचार प्रत्येक थ्रेड के लिए चर के अलग प्रतिलिपि बनाए रखने के लिए है: नीचे सरल प्रदर्शन है।
class Program
{
[ThreadStatic]
static int value = 10;
static void Main(string[] args)
{
value = 25;
Task t1 = Task.Run(() =>
{
value++;
Console.WriteLine("T1: " + value);
});
Task t2 = Task.Run(() =>
{
value++;
Console.WriteLine("T2: " + value);
});
Task t3 = Task.Run(() =>
{
value++;
Console.WriteLine("T3: " + value);
});
Console.WriteLine("Main Thread : " + value);
Task.WaitAll(t1, t2, t3);
Console.ReadKey();
}
}
ऊपर स्निपेट में, हम मुख्य थ्रेड सहित प्रत्येक थ्रेड के लिए value
की एक अलग प्रतिलिपि है,।
तो, एक ThreadStatic चर धागा जिस पर यह बनाई गई है को छोड़कर अन्य धागे पर उसके डिफ़ॉल्ट मान प्रारंभ कर दिया जाएगा।
यदि हम प्रत्येक धागे पर चर को अपने तरीके से प्रारंभ करना चाहते हैं, तो थ्रेडलोकल का उपयोग करें।
और पूरा लेख पाया जा सकता है [यहां] (http://putridparrot.com/blog/using-threadstatic-and-threadlocal/)। – dee
- 1. थ्रेडस्टैटिक बनाम थ्रेडलोकल <T> प्रदर्शन: गति या विकल्प?
- 2. क्या एक सामान्य विशेषता
- 3. "सामान्य" कार्यों बनाम जावास्क्रिप्ट
- 4. कॉलकॉन्टेक्स्ट बनाम थ्रेडस्टैटिक
- 5. थ्रेडस्टैटिक विशेषता कैसे काम करती है?
- 6. वसंत क्रॉन बनाम सामान्य क्रॉन?
- 7. स्पैस बनाम सामान्य ऐरे मैटलैब
- 8. std :: वेक्टर बनाम सामान्य सरणी
- 9. सामान्य सूची संपत्ति पर आवश्यक विशेषता
- 10. सामान्य
- 11. सामान्य
- 12. सामान्य
- 13. एक संगतता सामान्य रूप में पहले से ही इसी सामान्य सामान्य रूप में एक स्ट्रिंग है?
- 14. थ्रेडलोकल बनाम स्थानीय परिवर्तनीय रननेबल
- 15. .NET से सामान्य लिस्प
- 16. एक्सकोड सामान्य रूप से
- 17. सामान्य प्रकार से इंटरफ़ेस
- 18. सिंकलॉक (सामान्य रूप से)
- 19. जावा में अस्थिर बनाम थ्रेडलोकल
- 20. पर्ल मॉड्यूल क्लास विधि बनाम सामान्य सबराउटिन
- 21. सामान्य रिलीज बनाम रखरखाव रिलीज पर नीति?
- 22. पायथन सामान्य तर्क बनाम कीवर्ड तर्क
- 23. एसक्यूएल सर्वर: सामान्य इंडेक्स बनाम फुलटेक्स्ट इंडेक्स
- 24. एक सामान्य आईनेमेरेबल <T>
- 25. गिट-फ्लो बनाम सामान्य गिट कमांड
- 26. सी #: कोड संविदा बनाम सामान्य पैरामीटर सत्यापन
- 27. ऊंट अंत बनाम एंडचॉइस - सामान्य क्वेरी नहीं
- 28. सी # जेनेरिक्स - एक सामान्य वर्ग से सामान्य विधि कॉलिंग
- 29. क्यों Nullable <T> सामान्य बाधाओं
- 30. सरल अगर बयान बनाम सामान्य अगर बयान
देखें http://reedcopsey.com/2009/11/12/thread-specific-data-becomes-easier-in-net-4-0-via-threadlocalt/ - मुझे नहीं पता कि यह क्या है प्रतिबिंब के साथ हालांकि ... –