एक और क्रॉस-भाषा प्रश्न: क्या कोई मुझे बता सकता है कि सी # थ्रेडिंग जावा पुनर्विक्रेता लॉक और हालत कक्षाओं से सबसे अच्छी तरह से मेल खाता है? ReentrantLock में अनचाहे() और अनलॉक() विधियां हैं, जबकि कंडीशन में सिग्नल() और प्रतीक्षा() विधियां हैं। यह संयोजन है कि मैं सी # कोड में संरक्षित करने में सक्षम होना चाहता हूं - या कुछ ऐसा ही ... अग्रिम धन्यवाद।सी # में जावा रीन्टेंट्रॉक लॉक और हालत में सर्वश्रेष्ठ मैच?
उत्तर
मुझे लगता है कि आप जो खोज रहे हैं वह स्थिर Monitor वर्ग है। मैं blocking और non-blocking म्यूटेक्स अधिग्रहण के साथ-साथ condition variable संचालन के लिए अनुमति देता हूं। (वे संकेत और प्रतीक्षा के बजाय Pulse, PulseAll और Wait कहते हैं)।
अस्वीकरण: मुझे ये जावा कक्षाएं नहीं पता हैं, मैं यहां अंधेरे में एक स्टैब ले रहा हूं।
सी # में, आपके पास lock
कथन है (मुझे लगता है कि यह जावा के synchronized
कथन की तरह कुछ है) जो किसी ऑब्जेक्ट को लॉक कर सकता है। मुझे लगता है कि उस कथन का उपयोग करना, या Monitor.Enter(obj)
और Monitor.Exit(obj)
पुनर्विक्रेता लॉक की तरह थोड़ा होगा।
ManualResetEvent
और AutoResetEvent
नामक दो वर्ग हैं। इन कक्षाओं में Wait
विधि है, और Set
विधि है, जो मुझे लगता है कि हालत के सिग्नल और प्रतीक्षा की तरह है। इन दो वर्गों के बीच का अंतर यह है कि ManualResetEvent
सेट रहता है (अब किसी को अवरुद्ध नहीं करता है) और Reset
होना चाहिए। और AutoResetEvent
है - जैसा कि इसके नाम से पता चलता है - स्वचालित रूप से रीसेट करें।
एसिंक स्टेटमेंट में लॉक का उपयोग नहीं कर सकता और मॉनीटर विधियों को कॉल करने की आवश्यकता है सिंक्रनाइज़ेड थ्रेड से .. जावा के पुनर्वित्त लॉक का बिंदु उन मुद्दों को दूर करना है। – Vistritium
इस प्रश्न पूछे जाने पर एसिंक विधियों के रूप में देखकर सी # या जावा में मौजूद नहीं था, मुझे लगता है कि यह शायद ही कभी ReentrantLock का बिंदु है, या कम से कम उस प्रश्नकर्ता का जिक्र नहीं कर रहा था। समानता को इंगित करने के लिए – configurator
ReaderWriterLock कक्षा भी देखने लायक होगा। यह जावा में ReentrantReadWriteLock के समान है।
+1। लेकिन एमएसडीएन ने 'रीडरवाइटर लॉक' पर [रीडरवाइटर लॉकस्लिम] (https://msdn.microsoft.com/en-us/library/system.threading.readerwriterlockslim.aspx) का उपयोग करने की सिफारिश की है। – NightOwl888
- 1. सी सिग्नल हैंडलर पहेली में रेस हालत
- 2. सी में सर्वश्रेष्ठ समय विधि?
- 3. में जहां हालत
- 4. जावा में सर्वश्रेष्ठ एक्सएमएल हैंडलिंग क्लास
- 5. जावा में लॉक पुनर्वित्त क्या है?
- 6. हालत
- 7. उद्देश्य सी में सर्वश्रेष्ठ बहुप्रचार दृष्टिकोण?
- 8. सी ++ में आंकड़ों के लिए सर्वश्रेष्ठ पुस्तकालय?
- 9. हालत
- 10. सी # रेगेक्स - मैच और प्रतिस्थापित, ऑटो वृद्धि
- 11. सी # में बदलें और जावा में बदलें
- 12. सी # में नामस्थान और जावा में पैकेज
- 13. सी # नियमित अभिव्यक्ति मैच?
- 14. कई जेवीएम में लॉक?
- 15. संग्रह में पहला मैच
- 16. सी # एकाधिक स्ट्रिंग मैच
- 17. सी ++ में हालत चर के सामान्य उपयोग क्या हैं?
- 18. सर्वश्रेष्ठ जावा obfuscator?
- 19. जावा कंसुरेंसी: लॉक क्षमता
- 20. रूबी में regex का उपयोग करता है, तो हालत
- 21. एक ही हालत, अलग परिणाम
- 22. एमपीएमडियाइटम और आईट्यून्स मैच
- 23. जावास्क्रिप्ट मैच और यूनिकोड
- 24. मैच सी # यूनिकोड पहचानकर्ता Regex
- 25. सी में% 04X का अर्थ और जावा
- 26. पायथन/रेगेक्स - मैच #, #। स्ट्रिंग में
- 27. जावा - सर्वश्रेष्ठ उपयुक्त डेटा संरचना
- 28. सी ++ जांचें कि ब्रेसिज़ मैच
- 29. mysql हालत
- 30. सी # में "न्यूनतम मैच" रेगेक्स खोज कैसे करें?
मेरे लिए काम करने लगता है! धन्यवाद! एक और सवाल: क्या मॉनिटर जावा के समकक्ष प्रदान करता है हेल्डबीक्यूरेंट थ्रेड()? –
नहीं, आप मॉनीटर का विस्तार कर सकते हैं और थ्रेड का संदर्भ रख सकते हैं जिसे अंतिम रूप से एंटर या TryEnter कहा जाता है। वर्तमान धागे को थ्रेड का उपयोग करके एक्सेस किया जा सकता है। कंटेंट थ्रेड: http://msdn.microsoft.com/en-us/library/system.threading.thread.currentthread.aspx –