मैं यह धारणा थी, पढ़ने this article कि यह बेहतर है धागा तुल्यकालन के लिए मॉनिटर/लॉक का उपयोग करने के रूप में यह देशी संसाधनोंमॉनिटर बनाम WaitHandle आधारित धागा सिंक
उपयोग नहीं करता है के बादविशिष्ट बोली (लेख के पेज 5 से):
मॉनीटर.एट/पल्स एक थ्रेड में कुछ होने की प्रतीक्षा करने का एकमात्र तरीका नहीं है और यह धागा बताता है कि यह दूसरे में हुआ है। Win32 प्रोग्रामर लंबे समय तक कई अन्य तंत्रों का उपयोग कर रहे हैं, और इन्हें ऑटोरसेट इवेंट, मैनुअल रीसेट इवेंट और म्यूटेक्स कक्षाओं द्वारा उजागर किया गया है, जिनमें से सभी प्रतीक्षाहैंडल से निकलते हैं। ये सभी वर्ग सिस्टम में हैं। नामस्थान को पढ़ना। (Win32 सेमफोर तंत्र में .NET 1.1 में एक प्रबंधित रैपर नहीं है। यह .NET 2.0 में मौजूद है, लेकिन यदि आपको पहले इसका उपयोग करने की आवश्यकता है, तो आप इसे पी/Invoke का उपयोग करके स्वयं को लपेट सकते हैं, या अपना स्वयं का गिनती सेमफोर लिख सकते हैं कक्षा।)
कुछ लोग यह जानकर आश्चर्यचकित हो सकते हैं कि इन कक्षाओं का उपयोग विभिन्न मॉनिटर विधियों का उपयोग करने से काफी धीमा हो सकता है। मेरा मानना है कि ऐसा इसलिए है क्योंकि देशी Win32 कॉल में प्रबंधित कोड का "आउट" जा रहा है और फिर "इन" वापस फिर से मॉनिटर प्रदान करने वाली चीज़ों के पूरी तरह से प्रबंधित दृश्य की तुलना में महंगा है। एक पाठक ने यह भी समझाया है कि मॉनीटर उपयोगकर्ता मोड में लागू किए जाते हैं, जबकि प्रतीक्षा हैंडल का उपयोग कर्नेल मोड में स्विच करने की आवश्यकता होती है, जो काफी महंगा है।
लेकिन एसओ की खोज करने और यहां कुछ प्रश्न/उत्तर पढ़ने के बाद से मैंने प्रत्येक का उपयोग कब करने की मेरी समझ पर संदेह करना शुरू कर दिया है। ऐसा लगता है कि कई लोग ऐसे मामलों में ऑटो/मैनुअल रीसेट इवेंट का उपयोग करने की सलाह देते हैं जहां मॉनिटर। वैट/पल्स करेंगे। क्या कोई मुझे बता सकता है जब मॉनिटर पर WaitHandle आधारित सिंक का उपयोग किया जाना चाहिए?
धन्यवाद
बहुत अच्छी व्याख्या। –
इसे समझाने के लिए धन्यवाद, यह सही समझ में आता है। – Matt
मुझे इस जगह से प्यार है ... आप इस तरह आसानी से ढूंढ सकते हैं और जवाब दे सकते हैं जो आपको पुस्तकों और लेखों के माध्यम से शोध करने के घंटों बचाएगा ... –