.NET में मुझे कैसे पता चलेगा कि कोई वर्ग या विधि थ्रेड सुरक्षित है या नहीं? क्या यह डिफ़ॉल्ट रूप से थ्रेड सुरक्षित नहीं है?क्या .NET में कक्षा या विधि को सुरक्षित रखने के लिए कोई विशेषता है?
उत्तर
यह इसके लिए कोई विशेषता नहीं है: आपको अपनी रुचि रखने वाले प्रत्येक आइटम के लिए प्रलेखन को पढ़ना होगा। आप इसमें कोई विशेषता जोड़कर कुछ थ्रेड सुरक्षित नहीं कर सकते हैं। यह एक नारंगी लेने और उस पर एक स्टिकर डालने जैसा है, "ऐप्पल" कहता है।
बेशक, वही बात क्रमबद्धता के लिए सच है और यह उन्हें वहां नहीं रोकती है, लेकिन फिर भी: कोई विशेषता नहीं है। दस्तावेज़ पढ़ें।
रोकें सभी स्थिर विधियों और गुणों को डिफ़ॉल्ट रूप से थ्रेड सुरक्षित माना जाता है (यानी अन्यथा दस्तावेज किए जाने तक), उदाहरण के लिए विधियों की धारणा यह है कि वे नहीं हैं। – Richard
किसी विधि को मानना धागा सुरक्षित नहीं है जब यह कोई नुकसान नहीं पहुंचाता है, मानते हैं कि कोई थ्रेड सुरक्षित है जब यह बुरा नहीं हो सकता है। इंगित करने के लिए आपका बेहतर बंद कुछ भी धागा सुरक्षित नहीं है। – JoshBerke
मुझे इस पर जोएल कोहौर्न पर मेरी पीठ मिली, इस तरह के दावों को 'नकली' करना आसान होगा।
क्यों नहीं समारोह वर्णन में threadsafe पाठ जोड़ने
मैं इसे 'फिकिंग' के बारे में बहुत ज्यादा चिंता नहीं करता। लेकिन समेकन कठिन है: यह बहुत संभावना है कि एक बग फिसल गया है और वह विशेषता सिर्फ गलत है। –
लेकिन यदि विशेषता गलत है, तो संभव है कि दस्तावेज़ (यदि कोई हो) गलत होगा। –
मैं पूरी तरह से @ जिममिशेल से सहमत हूं, लेकिन जोएल वह नहीं था जो दस्तावेज़ीकरण की वकालत कर रहा था। कम से कम गुण मशीन-पठनीय हैं, जो जिम्मेदार तरीकों के न्यूनतम, स्वचालित गणना, फ़िल्टरिंग, रिपोर्टिंग इत्यादि के लिए अनुमति देते हैं, और संभावित रूप से स्थिर विश्लेषण और/या त्रुटि रोकथाम के कुछ कमजोर रूप भी हैं।गुण जाने का तरीका हैं, लेकिन किसी भी वास्तव में उपयोगी तरीके से समवर्ती अर्थशास्त्र को पकड़ने के लिए आपको उनमें एक विस्तृत और व्यापक प्रणाली की आवश्यकता होगी। .NET के लिए, मुझे इस तरह के किसी भी डिजाइन या प्रस्ताव से अवगत नहीं है। –
एक वर्ग, सिंक्रनाइज़ जहाँ तक विधि का सवाल है आप कोडिंग शैली का अनुसरण इस्तेमाल कर रही है का कोई उपयोग नहीं स्थिति नहीं है:
using System.Runtime.CompilerServices;
[MethodImpl(MethodImplOptions.Synchronized)]
void MyMethod()
{
DoSomething();
}
समस्या है; जो अभी भी यह नहीं दर्शाता है कि विधि थ्रेड-सुरक्षित है - क्योंकि एक और थ्रेड एक अलग विधि को कॉल कर सकता है जिसमें * [MethodImpl] नहीं है, इस प्रकार प्रत्येक-दूसरे को कचरा कर रहा है। इसी प्रकार यदि सभी फ़ील्ड केवल पढ़े जाते हैं, तो बाल वस्तुओं पर फ़ील्ड उत्परिवर्तनीय हो सकते हैं, और समस्याएं पैदा हो सकती हैं। –
भले ही यह तथाकथित "कोडिंग शैली" * कुछ * संकेत दे सकता है (इस पृष्ठ पर कई अन्य टिप्पणियां देखें), 'MethodImplOptions.Synchronized' ध्वज का ओपी क्या ढूंढ रहा है इसका विपरीत अर्थ है। यह ध्वज यह इंगित करने के लिए है कि विधि ** ** ** थ्रेड-सुरक्षित नहीं है। दस्तावेज़ीकरण से: "विधि को एक समय में केवल एक धागे द्वारा निष्पादित किया जा सकता है।" –
यह IContributeObjectSink/IContextAttribute
के माध्यम से अपने ऑब्जेक्ट सीरियल तक पहुंच बनाने के लिए संभव है, हालांकि यह एक बड़ी प्रदर्शन हिट से पीड़ित होगा क्योंकि इसे आपके ऑब्जेक्ट को MarshalByRefObject
, संदर्भ निर्माण ओवरहेड आदि को उपclass करने की आवश्यकता होगी ...
नहीं, और यह व्यर्थ होगा।
void Add(something);
void Remove(index);
int GetCount();
something GetElementAt(index);
थ्रेड एक:
for 1 to 100 do
list.Add(12);
थ्रेड दो और तीन:
चलो मैं एक धागा सुरक्षित सूची है मान लेते हैं, यह तीन थ्रेड तरीकों ™ सुरक्षित है
while(list.GetCount() >0)
{
list.Remove(0);
}
उपरोक्त कोड क्रैश (जल्दी या बाद में) क्रैश हो जाएगा क्योंकि आप GetCount
और Remove
- 1. रिवर्स इंजीनियरिंग से अपने .NET कोड को सुरक्षित रखने के लिए आप क्या उपयोग करते हैं?
- 2. क्या MaxPermSize को छोटा रखने के लिए कोई लाभ है?
- 3. क्या .NET (या कम से कम सी #) के लिए कोई सुरक्षित रिफैक्टरिंग उपकरण है?
- 4. मल्टीथ्रेडिंग: क्या मुझे अपने चर को केवल-पढ़ने की विधि में सुरक्षित रखने की आवश्यकता है?
- 5. क्या .NET System.Net.CookieContainer थ्रेड सुरक्षित है?
- 6. क्या कक्षा नाम को सत्यापित करने के लिए कोई .NET फ़ंक्शन है?
- 7. क्या डीबगर के भीतर संपत्ति मूल्यांकन को रोकने के लिए कोई .NET विशेषता है?
- 8. क्या यह निर्धारित करने के लिए एक ह्युरिस्टिक है कि कोई विधि या फ़ील्ड कक्षा में है या नहीं?
- 9. कौन सी विशेषताएं कक्षा को सुरक्षित रखने के लिए बनाती हैं?
- 10. .NET: क्या एक कक्षा के गुणों को प्रतिलिपि बनाने के लिए एक कक्षा है
- 11. क्या अंतर्निहित फ़ंक्शन नाम को विशेषता या विधि पहचानकर्ता के रूप में उपयोग करना बुरा व्यवहार है?
- 12. कन्फ्यूसर .NET Obfuscator। क्या ये सुरक्षित है?
- 13. विशेषता त्रुटि: कक्षा के इंस्टेंस में कोई __call__ विधि नहीं है
- 14. .net में webservice को सुरक्षित करने के लिए कैसे?
- 15. .NET में 'CLSCompliant' विशेषता क्या है?
- 16. क्या कक्षा में "विकल्प" जोड़ने के लिए कोई पैटर्न है?
- 17. कक्षा विधि को लपेटने के लिए मॉड्यूल?
- 18. क्या यह AsyncTask में एक टुकड़े के लिए एक मजबूत संदर्भ रखने के लिए सुरक्षित है?
- 19. क्या यह एक पॉइंटर को चर के बाहर एक चर रखने के लिए सुरक्षित है?
- 20. क्या संपत्ति का "प्रदर्शन नाम" निर्दिष्ट करने के लिए कोई .NET विशेषता है?
- 21. obfuscate या सुरक्षित करने के लिए सबसे अच्छी विधि .Net assemblies
- 22. मेरा .NET विशेषता कोई कार्रवाई क्यों नहीं करती है?
- 23. क्या पीडीएफ दस्तावेज़ों को संपादित करने के लिए सी # या .net में कोई एपीआई है?
- 24. क्या स्ट्रिंग या char में .NET को दोहराने के लिए कोई अंतर्निहित फ़ंक्शन है?
- 25. क्या .NET में कोई OpenFileOrFolderDialog ऑब्जेक्ट है?
- 26. क्या जावास्क्रिप्ट में कोई सुरक्षित देरी है?
- 27. । एचटीएसीएएस रीवाइट्रूल जीईटी यूआरएल पैरामीटर को सुरक्षित रखने के लिए
- 28. क्या कोई सुरक्षित स्ट्रैम्प है?
- 29. क्या UserControl को ध्यान में रखने का कोई तरीका है?
- 30. क्या अज्ञात, परिवर्तनीय, सुरक्षित मतदान के लिए कोई एल्गोरिदम है?
पर कॉल करने के दौरान सूची को बदलने का समय आपको किस उद्देश्य के लिए पसंद करेगा? – AnthonyWJones
क्लास उपयोगकर्ता –
को चेतावनी देने के लिए कोड प्रलेखन का एक प्रकार हो सकता है यदि वह सिर्फ दस्तावेज़ीकरण चाहता है, तो वह इसे अनुभाग में डाल सकता है। –