म्यूट एक्स और इवेंट के बीच अंतर;

Anonim

म्यूट एक्स बनाम इवेंट

सी # में, बहुत सारे थ्रेडिंग सिंक्रनाइज़ेशन विकल्प हैं अधिक व्यापक रूप से उपयोग किए जाने वाले दो म्यूटक्स और इवेंट हैं। बस इन दोनों के बीच अंतर क्या है? कौन सा एक बेहतर विकल्प है?

इवेंट विकल्प थ्रेड को ब्लॉक करने का विकल्प देने में सक्षम है जब तक कोई इवेंट प्रसारित नहीं किया जाता है, तो इसका नाम "ईवेंट" "यह कुछ भी सो रहा है और केवल जागते समय ही जागता है जब महत्व का कुछ होता है घटनाएं म्यूटक्स के विपरीत होती हैं क्योंकि म्यूट के पास सिग्नलिंग विकल्प या फ़ंक्शन नहीं होते हैं। घटनाक्रम संकेत को साफ़ करने में सक्षम होते हैं, जब एक व्यक्ति जो उस पर प्रतीक्षा कर रहा था, जाग गया था। यहां तक ​​कि एपीआई एक या सभी विभिन्न ईवेंट सिग्नल होने तक विकल्प ब्लॉक करने की अनुमति देने में सक्षम हैं। इसके अलावा, घटनाएं कर्नेल ऑब्जेक्ट हैं म्यूटक्स की तुलना में वे "लाइटर" नहीं हैं एक घटना मूल रूप से दो राज्यों वाले कर्नेल ऑब्जेक्ट है। आम तौर पर, एक घटना एक घटना के आने का संकेत करता है और कभी-कभी I / O ऑपरेशन के अंत भी होता है।

"म्यूट एक्स" म्यूचुअल बहिष्करण के लिए है। यह साझा किए गए संसाधनों के लिए स्कॉड समन्वय तंत्र का एक रूप है। लेनदेन के एक रूप के रूप में इसे सोचो आप प्रतीक्षा करने के लिए बाध्य नहीं हैं, हालांकि आप कुछ साझा किए गए संसाधनों का उपयोग करना चाहते हैं (केवल ऐसे उदाहरणों में कि अन्य लोग पहले से ही इसे एक्सेस कर रहे हैं) आप अवरुद्ध कर रहे हैं एक म्यूटक्स में दो राज्य होते हैं, हालांकि यह एक पारस्परिक बहिष्कार को लागू करने के लिए मौजूद है। यह उस समय के लिए है जब आप उस कोड की रक्षा करना चाहते हैं जो आम तौर पर एक साझा संसाधन को उस हिस्से से अपडेट करता है जिसमें म्यूटक्स का दावा किया जाता है जिसमें उस भाग को रिलीज़ किया जाएगा। इससे इस तथ्य की ओर बढ़ता है कि अनुभाग के माध्यम से कोई भी अन्य थ्रेड पास नहीं हो सकता है

जिन लोगों ने एक म्यूट एक्स की सहायता से एक घटना को अनुकरण करने की कोशिश की है, उन्हें समस्या का सामना करना पड़ता है, जहां तक ​​ताला अधिग्रहण हो जाता है या इवेंट सिग्नल हो जाती है, वह व्यक्ति हर किसी को बाहर रखता है जब तक ताला जारी नहीं किया जाता है यह एक इवेंट की सिमेंटिक्स नहीं है, जिसे सिग्नल किया जा रहा है। एक घटना पोस्ट में रह सकती है और गेट का एक रूप सभी थ्रेड टेस्टिंग के लिए उपलब्ध होगा, जिसमें कोई ताला नहीं है। सिंक्रनाइज़ेशन इंटरप्रोस करने के लिए प्रतिबद्ध म्यूट x कर्नेल-मोड ऑब्जेक्ट में है। एक विधि के तहत बहुस्तरीय सिंक्रनाइज़ेशन के लिए किए गए ईवेंट उपयोगकर्ता-मोड ऑब्जेक्ट में हैं।

-3 ->

म्यूट एक्स ऑब्जेक्ट बहुत भारी और बहुत सामान्य है। इवेंट ऑब्जेक्ट्स बहुत लाइटर हैं प्रयोक्ता-मोड सिंक्रनाइज़ेशन का कारण अधिकांश परिस्थितियों में उपयोग होता है क्योंकि यह कम CPU चक्र देता है। म्यूटक्स बहुत महत्वपूर्ण खंड की तरह है और साझा किए गए संसाधनों तक पहुंच को सिंक्रनाइज़ करने के लिए उपयोग किया जाता है। घटनाओं का एक बिल्कुल अलग कार्य है क्योंकि उनका उपयोग कुछ लोगों के लिए कार्यों को सिंक्रनाइज़ करने के लिए या कार्य शेड्यूलिंग के प्रबंधन के लिए किया जाता है।

घटनाएं म्यूटेक्स के विपरीत एक शर्त चर से अधिक होती हैं, जो कि कुछ शब्दावली में

मॉनिटर की तरह होती है, या यह सैक्राम / म्यूट एक्स के पारंपरिक रूप से हो सकती है।

सारांश:

1 ईवेंट विकल्प थ्रेड्स को तब तक ब्लॉक करने का विकल्प दे सकता है जब तक कोई ईवेंट प्रसारित नहीं किया जाता है, इस प्रकार नाम "ईवेंट। "

2। एक घटना मूल रूप से दो राज्यों वाले कर्नेल ऑब्जेक्ट है। आम तौर पर, एक घटना एक घटना के आने का संकेत करता है और कभी-कभी I / O ऑपरेशन के अंत भी होता है।

3। "म्यूटक्स" परस्पर बहिष्करण के लिए है। यह साझा किए गए संसाधनों के लिए स्कॉड समन्वय तंत्र का एक रूप है।

4। सिंक्रनाइज़ेशन इंटरप्रोस करने के लिए प्रतिबद्ध म्यूट x कर्नेल-मोड ऑब्जेक्ट में है। एक विधि के तहत बहुस्तरीय सिंक्रनाइज़ेशन के लिए किए गए ईवेंट उपयोगकर्ता-मोड ऑब्जेक्ट में हैं।

5। घटनाएं एक शर्त चर से अधिक हैं, म्यूटक्स के विपरीत, जो कि कुछ शब्दावली में एक

मॉनिटर की तरह अधिक है, या यह सैक्राम / म्यूट एक्स का पारंपरिक रूप हो सकता है।