यदि मेरे पास दी गई रजिस्ट्री कुंजी (HKLM से बाहर) तक पहुंचने वाली दो प्रक्रियाएं हैं, तो क्या यह एक म्यूटेक्स में तर्क को लपेटना अच्छा विचार है?क्या Win32 रजिस्ट्री 'थ्रेड सुरक्षित' है?
उत्तर
रजिस्ट्री यह सुनिश्चित करेगी कि कार्य परमाणु हैं, इसलिए आपको इसे स्वयं सिंक्रनाइज़ करने की आवश्यकता नहीं है।
हालांकि, यदि आपके पास एक ही समय में रजिस्ट्री तक पहुंचने वाली कई प्रक्रियाएं/धागे हैं, तो इससे पहले कोई भी गारंटी नहीं होती है। केवल इतना है कि आपको खराब डेटा नहीं मिलेगा।
संपादित करें: आगे पढ़ें, The inability to lock someone out of the registry is a feature, not a bug देखें।
यह उस बात पर निर्भर करता है कि आप क्या संचार कर रहे हैं, और जानकारी कितनी समय-समय पर महत्वपूर्ण है। उदाहरण के लिए, कहें कि आपके पास एक ऐप काम कर रहा है और एक रजिस्ट्री कुंजी पर स्टेटस परिणाम लिख रहा है, और एक और ऐप उस स्थिति को पढ़ रहा है और इसे स्क्रीन पर प्रदर्शित कर रहा है। उस स्थिति में, मैं एक म्यूटेक्स से परेशान नहीं होगा, क्योंकि पाठक हमेशा एक मूल्य प्राप्त करेंगे जो "समझ में आता है"। आप जो पूछ रहे हैं वह वास्तव में समरूपता डिजाइन का एक मौलिक सवाल है, मुझे लगता है।
इस रेमंड चेन लेख का एक त्वरित पठन लें। यह बताता है कि रजिस्ट्री के खिलाफ व्यक्तिगत लिखता है और पढ़ता है परमाणु हैं। हालांकि, अन्य लॉकिंग आपके ऊपर है क्योंकि अब विशेष रूप से एक खुली कुंजी पकड़ने का तरीका है।
http://blogs.msdn.com/oldnewthing/archive/2009/03/26/9508968.aspx
विंडोज सर्वर 2008 भी रजिस्ट्री में लेन-देन संबंधी पहुँच के लिए समर्थन हासिल है। एमएसडीएन में Here's the overview। और यहां कुछ प्रश्नों और उत्तरों के साथ इसे blog post घोषित किया गया है।
जैसा कि अन्य ने उल्लेख किया है, व्यक्तिगत संचालन परमाणु हैं। यदि आपको परमाणु संचालन का एक बड़ा सेट बनाने की आवश्यकता है, और आप Vista या बेहतर को लक्षित कर रहे हैं, तो आप Vista में जोड़े गए लेनदेन संबंधी रजिस्ट्री समर्थन का उपयोग कर सकते हैं।
दुर्भाग्य से, कोई प्रत्यक्ष प्रबंधित समर्थन नहीं है इसलिए आपको रैपर बनाने की आवश्यकता है। http://community.bartdesmet.net/blogs/bart/archive/2006/12/14/Windows-Vista-2D00-Introducing-TxR-in-C_2300_-_2800_Part-1_2900_.aspx दिखाता है कि पी/इन तरीकों को कैसे आमंत्रित करें।
- 1. Win32 विंडोज थ्रेड सुरक्षित हैं?
- 2. Win32 रजिस्ट्री
- 3. थ्रेड-सुरक्षित ByteArrayOutputStream क्या है?
- 4. क्या डीडब्ल्यूस्क्रिप्ट थ्रेड-सुरक्षित है?
- 5. क्या NSUserDefault थ्रेड सुरक्षित है?
- 6. क्या RNGCryptoServiceProvider.GetBytes थ्रेड सुरक्षित है?
- 7. क्या HttpContext.Current.Cache थ्रेड-सुरक्षित है?
- 8. क्या एनएसपीर्सिस्टेंटस्टोरकॉर्डिनेटर थ्रेड सुरक्षित है?
- 9. क्या Itertools थ्रेड-सुरक्षित है?
- 10. जॉइनर थ्रेड सुरक्षित है?
- 11. Magento थ्रेड-सुरक्षित है?
- 12. SQLite.Net थ्रेड-सुरक्षित है?
- 13. एपोल थ्रेड-सुरक्षित है?
- 14. स्ट्रीम है। थ्रेड-सुरक्षित?
- 15. javax.sql.DataSource थ्रेड सुरक्षित है?
- 16. क्या विंडोज 'rand_s थ्रेड-सुरक्षित है?
- 17. क्या यह कोड थ्रेड-सुरक्षित है?
- 18. क्या MySQL कनेक्टर/जेडीबीसी थ्रेड सुरक्षित है?
- 19. जावा ट्रांसपोर्ट.send() क्या यह थ्रेड-सुरक्षित है?
- 20. क्या पूर्व-वृद्धि ऑपरेटर थ्रेड-सुरक्षित है?
- 21. क्या डेल्फी का टैडोकोनक्शन थ्रेड-सुरक्षित है?
- 22. क्या डब्ल्यूसीएफ क्लाइंटबेस थ्रेड सुरक्षित है?
- 23. क्या सी ++ std :: सेट थ्रेड-सुरक्षित है?
- 24. क्या .NET System.Net.CookieContainer थ्रेड सुरक्षित है?
- 25. डेल्फी - क्या TClientDataset थ्रेड सुरक्षित है?
- 26. क्या सी # '??' है ऑपरेटर थ्रेड सुरक्षित?
- 27. 'थ्रेड सुरक्षित' ऑब्जेक्ट का क्या अर्थ है?
- 28. क्या ट्रोव लाइब्रेरी थ्रेड-सुरक्षित है?
- 29. क्या पर्ल की inet_aton थ्रेड-सुरक्षित है?
- 30. क्या सीएक्सएफ क्लाइंट प्रॉक्सी थ्रेड सुरक्षित है?