2016-07-02 24 views
12

मैंने पढ़ा कि म्यूटेक्स मूल्य 1 (बाइनरी सेमफोर) के साथ एक सेमफोर है जिसका उपयोग आपसी बहिष्करण को लागू करने के लिए किया जाता है।मॉनीटर बनाम म्यूटेक्स

मैंने यह लिंक Semaphore vs. Monitors - what's the difference? पढ़ा है जो कहता है कि मॉनिटर पारस्परिक बहिष्करण प्राप्त करने में सहायता करता है।

किसी को भी जब से तुम निर्दिष्ट नहीं किया है मुझे म्युटेक्स के बीच अंतर बताने और निगरानी कर सकते हैं दोनों वास्तव में एक ही बात

उत्तर

8

कर रहे हैं जो ओएस या भाषा/पुस्तकालय आप के बारे में बात कर रहे हैं, मुझे एक सामान्य तरीके से उत्तर दे ।

संकल्पनात्मक रूप से वे वही हैं। लेकिन आम तौर पर वे थोड़ा अलग ढंग से लागू किया जाता है

मॉनिटर

आमतौर पर, पर नज़र रखता है के कार्यान्वयन में तेजी/हल्के वजन है, क्योंकि यह एक ही प्रक्रिया के भीतर मल्टी-थ्रेडेड तुल्यकालन के लिए बनाया गया है। इसके अलावा, आमतौर पर, यह एक ढांचे/पुस्तकालय द्वारा प्रदान किया जाता है (जैसा कि ओएस का अनुरोध करने के विरोध में)।

Mutex

आमतौर पर, mutexes ओएस गिरी और लाइब्रेरी द्वारा प्रदान की जाती हैं/चौखटे बस इसे लागू करने की एक इंटरफेस प्रदान करते हैं। यह उन्हें भारी वजन/धीमा बनाता है, लेकिन वे विभिन्न प्रक्रियाओं पर धागे में काम करते हैं। ओएस अलग निष्पादन योग्य के उदाहरणों के बीच आसान साझा करने के लिए नाम से म्यूटेक्स तक पहुंचने के लिए सुविधाएं भी प्रदान कर सकता है (जैसा कि एक हैंडल का उपयोग करने के विपरीत है जिसे केवल fork द्वारा उपयोग किया जा सकता है)।

+1

की तरह शांत रिवर्स (प्रदर्शन वार) लगता है: http://japgolly.blogspot.bg/2012/04/ruby-mutex-reentrancy.html – akostadinov

+0

@akostadinov मुझे इस पर टिप्पणी करने के लिए रूबी नहीं पता है। यह भी सुनिश्चित नहीं है कि इस बेंचमार्क के लिए उपयोग किया गया कोड विश्वसनीय है या नहीं। शायद रूबी सामान्य बयान के लिए एक बाहरी है जो मैं कर रहा हूं?जोसेफ अल्बाहारी में कुछ [सी # में लॉकिंग कंस्ट्रक्चर की तुलना] है (http://www.albahari.com/threading/part2.aspx#_Locking) जो मेरे दावों के साथ बेहतर जैव लगता है – Vikhram

+0

यह नहीं देखा कि यह सवाल रूबी विशिष्ट नहीं है । अजीब लेकिन मैं इस तरह की अजीबता से आश्चर्यचकित नहीं हूं .. मेरा मतलब किसी और चीज के लिए रूबी व्यवहार अंतर के बारे में है। – akostadinov

5

मॉनिटर तो Mutex लेकिन वे एक भावना है कि मॉनिटर Mutex के शीर्ष पर निर्माण कर रहे हैं में इसी तरह माना जा सकता है अलग हैं। स्पष्टता के लिए नीचे की छवि में मॉनीटर का चित्रण देखें।

मॉनिटर एक तुल्यकालन निर्माण धागे दोनों पारस्परिक अपवर्जन (ताले का प्रयोग करके) और सहयोग अर्थात धागे कुछ हालत के लिए प्रतीक्षा (का उपयोग कर प्रतीक्षा-सेट) सच होना करने की क्षमता है करने के लिए अनुमति देता है।

दूसरे शब्दों में, डेटा है कि एक ताला लागू करता है के साथ साथ, हर जावा वस्तु तार्किक डेटा को लागू करने वाली साथ जुड़ा हुआ है एक प्रतीक्षा-निर्धारित किया है। जबकि ताले एक दूसरे के साथ हस्तक्षेप किए बिना साझा डेटा पर स्वतंत्र रूप से काम करने के लिए धागे की सहायता करते हैं, प्रतीक्षा-सेट एक दूसरे के साथ सहयोग करने के लिए थ्रेड को एक दूसरे के साथ सहयोग करने में मदद करते हैं। सभी प्रतीक्षा धागे इस प्रतीक्षा-सेट में स्थानांतरित हो जाएंगे और लॉक जारी होने के बाद सभी को अधिसूचित किया जाएगा। यह प्रतीक्षा-सेट लॉक की अतिरिक्त सहायता के साथ मॉनीटर बनाने में मदद करता है (म्यूटेक्स)।

enter image description here

मैं आप चाहते हैं, आप मेरा उत्तर here है, जो या इस सवाल के लिए प्रासंगिक नहीं हो सकता देख सकते हैं।

आप किसी अन्य प्रासंगिक चर्चा यहां पा सकते हैं

Semaphore vs. Monitors - what's the difference?

संबंधित मुद्दे