मैं अब AutoMapper कोड को देख रहा हूँ (परियोजनाओं मैं पर काम कर रहा हूँ में से एक के लिए यह मूल्यांकन करने), और, स्पष्ट रूप से कहा जाए तो मैं काफी हैरान हूँ:MapMap.Map ऑटोमैपर थ्रेड-सुरक्षित में है?
- पुस्तकालय एपीआई एक भी स्थिर पर आधारित है एक्सेस पॉइंट (
Mapper
प्रकार), इसलिए आम तौर पर इसके किसी भी तरीके को थ्रेड सुरक्षित होना चाहिए - लेकिन मुझे कोड में इसका कोई सबूत नहीं मिला।
सभी मुझे लगता है करने में सक्षम था this issue है, लेकिन फिर भी बयान वहाँ लगता है गलत किया: अगर Map
धागे की सुरक्षित डाटा संरचनाओं आंतरिक रूप से, यह धागा सुरक्षित करने के साथ ही नहीं माना जा सकता का उपयोग नहीं करता, अगर मैं गैर-समवर्ती संदर्भ में CreateMap
पर कॉल करने जा रहा हूं, लेकिन समसामयिक रूप से Map
के साथ।
आईई। उदाहरण में ऑटोमैपर का एकमात्र संभावित उपयोग पैटर्न एएसपी.नेट एमवीसी एप्लीकेशन है:
lock (mapperLock) {
... Mapper.AnyMethod(...) ...
}
जाहिर है, अगर मैं सही हूं, तो यह एक बड़ी कमी है।
- मैं सही हूँ:
तो मैं दो प्रश्न हैं?
- यदि हां, तो ऑटोमैपर का सबसे अच्छा विकल्प क्या है जिसमें यह समस्या नहीं है?
मुख्य कुंजी लगता है कि 'थ्रेडसेफलिस्ट _typeMaps' के माध्यम से डबल-चेक लुकअप है; आपको क्या लगता है कि यह थ्रेड-सुरक्षित नहीं है? क्या *** विशेष रूप से *** क्या आपको विश्वास है कि थ्रेड-सुरक्षित नहीं है? –
टाइपमैप एक अपरिवर्तनीय वस्तु है? –
तुम मुझे बताओ! (और प्रश्न भी हैं: यहां तक कि यदि यह नहीं है, तो यह आपके द्वारा किसी अन्य बिंदु पर अनुपयुक्त रूप से अपडेट किया गया है)। आपने दावा किया है कि यह थ्रेड-सुरक्षित नहीं है; कृपया जो भी आपको लगता है उस पर विस्तार से सुरक्षित न हों। ध्यान दें कि आम तौर पर रणनीति (एक बार निर्मित) अद्यतन नहीं होती है, इसलिए केवल एक चीज जिसे सुरक्षा की आवश्यकता होती है वह रणनीति-कैश तक पहुंच है, जो सही तरीके से किया जाता है। –