बाइनरी म्यूटेक्स के बजाय गिनती सेमफोर का उपयोग करने के लिए कैननिकल उदाहरण तब होता है जब आपके पास सीमित संसाधन उपलब्ध होते हैं जो एक हैं) अदला-बदली और बी) एक से अधिक।
उदाहरण के लिए, यदि आप अधिकतम 10 पाठकों को एक बार डेटाबेस तक पहुंचने की अनुमति देना चाहते हैं, तो आप संसाधन तक पहुंच सीमित करने के लिए 10 तक शुरू किए गए गिनती सेमफोर का उपयोग कर सकते हैं। संसाधन को एक्सेस करने से पहले प्रत्येक पाठक को सेमफोर प्राप्त करना होगा, उपलब्ध गणना को कम करना होगा। एक बार गिनती 0 तक पहुंच जाती है (यानी 10 पाठकों तक पहुंच प्राप्त हुई है, और डेटाबेस का उपयोग कर रहे हैं), अन्य सभी पाठक लॉक हो गए हैं। एक बार पाठक खत्म होने के बाद, वे सैमफोर गिनती को एक-एक करके बैक अप करते हैं ताकि यह इंगित किया जा सके कि वे अब संसाधन का उपयोग नहीं कर रहे हैं और कुछ अन्य पाठक अब सेमफोर लॉक प्राप्त कर सकते हैं और अपने स्थान पर पहुंच प्राप्त कर सकते हैं।
हालांकि, गिनती सेमफोर, बस अन्य सभी सिंक्रनाइज़ेशन प्राइमेटिव्स की तरह, कई उपयोग के मामले हैं और यह सिर्फ बॉक्स के बाहर सोचने की बात है। आप पाएंगे कि म्यूटेक्स प्लस अतिरिक्त तर्क के साथ हल करने के लिए आपके द्वारा उपयोग की जाने वाली कई समस्याएं अधिक से अधिक आसानी से और अधिक से सीधे एक सेमफोर के साथ कार्यान्वित की जा सकती हैं। एक म्युटेक्स कुछ भी आप एक म्युटेक्स साथ कर सकते हैं एक सेमाफोर (बस एक के लिए गिनती सेट) के साथ किया जा सकता है, लेकिन वहाँ चीजें हैं जो अकेले एक सेमाफोर साथ किया जा सकता हैं कि, सेमाफोर के एक सबसेट है कि कहने के लिए है कि सिर्फ एक म्यूटेक्स के साथ नहीं किया जा सकता है।
दिन के अंत में, किसी भी सिंक्रनाइज़ेशन आदिम आमतौर पर कुछ भी करने के लिए पर्याप्त होता है (इसे थ्रेड सिंक्रनाइज़ेशन के लिए "ट्यूरिंग-पूर्ण" होने के बारे में सोचें, उस शब्द को बेस्टर्ड करने के लिए)। हालांकि, प्रत्येक एक अलग अनुप्रयोग के लिए दर्जी फिट है, और जब आप कुछ अनुकूलन और अतिरिक्त गोंद के साथ अपनी बोली लगाने के लिए मजबूर करने में सक्षम हो सकते हैं, तो यह संभव है कि नौकरी के लिए एक अलग सिंक्रनाइज़ेशन आदिम बेहतर हो।
स्रोत
2012-07-17 18:11:09
ओपी बाइनरी सेमफोर बनाम (हमेशा-बाइनरी) म्यूटेक्स के बारे में पूछ रहा था, म्यूटेक्स बनाम सेमफोर की गणना नहीं की गई। –