म्यूटक्स आणि इव्हेंट दरम्यान फरक

Anonim

मुइटक्स वि इव्हेंट

सी # मध्ये, वेगवेगळ्या थ्रेडींग सिंक्रोनाइजेशन पर्यायांमध्ये बरेच वेगळे आहेत. अधिक प्रमाणात वापरले जाणारे दोन प्रकार mutex आणि इव्हेंट आहेत. या दोघांमधील फरक नक्की काय आहे? कोणता एक चांगला पर्याय आहे?

इव्हेंटचा पर्याय थ्रेड्सला इव्हेंट प्रसारित होईपर्यंत ब्लॉक करण्यासाठी पर्याय देण्यास सक्षम आहे "नाव इव्हेंट. "काहीतरी झोपायला लावणे सारखेच असते आणि केवळ तेव्हाच घडते जेव्हा महत्वाचे काहीतरी घडते. Mutexes प्रमाणेच कार्यक्रम असतात कारण mutexes कडे सिग्नलिंग पर्याय किंवा फंक्शन नाही. इव्हेंट सिग्नल क्लिअर करण्यास सक्षम आहेत जे एकदा प्रतिक्षा करण्यास सक्षम होते ते जागृत झाले आहेत. जरी एपीआय एक किंवा सर्व भिन्न कार्यक्रमांना सिग्नल होईपर्यंत पर्याय अवरोधित करण्याची परवानगी देता येतात. याव्यतिरिक्त, कार्यक्रम कर्नल ऑब्जेक्ट आहेत Mutexes च्या तुलनेत ते "फिकट" नाहीत. इव्हेंट मुळात दोन स्तर असलेली कर्नल ऑब्जेक्ट आहे. साधारणपणे, एखादा इव्हेंट एखाद्या इव्हेंटच्या इतिहासाला सूचित करतो आणि काहीवेळा I / O ऑपरेशनचा शेवटही असतो.

"म्यूट एक्स" हे परस्पर अपवर्जनासाठी वापरले आहे. हे सामायिक केलेल्या स्रोतांसाठी स्कॉडेड समन्वय यंत्रणा एक प्रकार आहे. व्यवहाराचा एक प्रकार म्हणून याचा विचार करा आपण काही सामायिक संसाधने (केवळ अन्य जण आधीपासूनच त्यात प्रवेश करत आहे त्यातच) आपण अवरोधित करत असाल तरीही प्रवेश करण्याची आपल्याला आवश्यकता नाही. एक mutex दोन राज्यांची बनलेला, जरी प्रभाव एक म्युच्युअल वगळताना मध्ये ठेवणे आहे. हे जेव्हा आपण कोडच्या एका विस्तृत रचनेचे संरक्षण करू इच्छित असतो तेव्हा सामान्यतः त्या भागातून सामायिक संसाधने अपडेट करते ज्यामध्ये तो म्यूटक्सचा दावा केला जातो त्या भागात तो सोडला जाईल. या घटनेतून पुढे जात नाही.

ज्या लोकांनी म्युटेक्सच्या मदतीने कार्यक्रम बनवण्याचा प्रयत्न केला आहे त्यांना समस्या उद्भवली आहे ज्यात लॉकची उपलब्धता झाली आहे किंवा इव्हेंट सिग्नल केला गेला आहे, तर प्रत्येकजण बाहेर इतरांना ठेवत आहे लॉक प्रकाशीत होईपर्यंत. हा सिग्नल करण्याच्या इव्हेंटची सिमेंटिक्स नाही. एखाद्या इव्हेंटमध्ये पोस्ट केले जाऊ शकते आणि गेटचा एक प्रकार कोणत्याही धागा नसल्यास सर्व थ्रेड टेस्टिंगसाठी उपलब्ध असेल. सिंक्रोनाइझेशनमधील इंटरप्रोसेजसाठी मुuteक्स कर्नल-मोड ऑब्जेक्ट मध्ये आहे. एक पद्धत अंतर्गत multithreaded समक्रमण करीता केलेले इव्हेंट वापरकर्ता-मोड ऑब्जेक्टमध्ये आहेत.

म्यूट एक्स ऑब्जेक्ट खूप जड आणि खूप सामान्य आहे. इव्हेंट ऑब्जेक्ट्स जास्त फिकट असतात. वापरकर्ता-मोड सिंक्रोनाइजेशनचा वापर बहुतेक घटनांमध्ये वापरला जातो कारण तो कमी CPU स्थाने देतो. म्यूटक्स हे अतिशय गंभीर विभागांसारखेच आहे आणि सामायिक झालेल्या स्त्रोतांकरीता प्रवेश समक्रमित करण्यासाठी वापरला जातो. इव्हेंट्सचा एक वेगळा फंक्शन आहे कारण ते कार्ये समक्रमित करण्यासाठी वापरले जातात किंवा काही लोकांसाठी कार्य शेड्यूलिंग व्यवस्थापनासाठी वापरले जातात.

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

मॉनिटरसारखे आहे, किंवा ते सॅपाफोर / म्यूटक्सचे पारंपरिक रूप असू शकते.

सारांश:

1 इव्हेंट पर्याय एखादे इव्हेंट प्रसारित होईपर्यंत थ्रेड्सला अवरोधित करण्याचा पर्याय देऊ शकतात, अशा प्रकारे "इव्हेंट" नाव. "< 2 इव्हेंट मुळात दोन स्तर असलेली कर्नल ऑब्जेक्ट आहे. साधारणपणे, एखादा इव्हेंट एखाद्या इव्हेंटच्या इतिहासाला सूचित करतो आणि काहीवेळा I / O ऑपरेशनचा शेवटही असतो.

3 "म्यूटक्स" म्युच्युअल अपवर्जनासाठी आहे. हे सामायिक केलेल्या स्रोतांसाठी स्कॉडेड समन्वय यंत्रणा एक प्रकार आहे.

4 सिंक्रोनाइझेशनमधील इंटरप्रोसेजसाठी मुuteक्स कर्नल-मोड ऑब्जेक्ट मध्ये आहे. एक पद्धत अंतर्गत multithreaded समक्रमण करीता केलेले इव्हेंट वापरकर्ता-मोड ऑब्जेक्टमध्ये आहेत.

5 इव्हेंट्स अधिक अटी वेरियेबल आहेत, जो म्यूटक्सच्या विपरीत असतात, जे काही

मॉनिटर सारखे काही परिचलनशास्त्र असते, किंवा ते सॅपाफोर / म्यूटक्सचे पारंपारिक स्वरूप असू शकते. <