जब भी संभव हो, म्यूटेक्स के बाहर स्थितियों को संकेत दिया जाना चाहिए। म्यूटेक्स समवर्ती प्रोग्रामिंग में एक आवश्यक बुराई है। उनका उपयोग विवाद की ओर जाता है जो एकाधिक प्रोसेसर के उपयोग से प्राप्त अधिकतम प्रदर्शन की प्रणाली को लूटता है।
एक म्युटेक्स के प्रयोजन के कार्यक्रम में कुछ साझा चर के लिए उपयोग की रक्षा के लिए इतना है कि वे atomically व्यवहार करते है। जब एक म्यूटेक्स के अंदर एक सिग्नलिंग ऑपरेशन किया जाता है, तो यह म्यूटेक्स में सैकड़ों अप्रासंगिक मशीन चक्रों को शामिल करने का कारण बनता है, जिसमें साझा डेटा की रक्षा करने के लिए कुछ भी नहीं है। संभावित रूप से, यह किसी उपयोगकर्ता स्थान से कर्नेल में सभी तरह से कॉल करता है।
मानक में "अनुमानित शेड्यूलर व्यवहार" के बारे में नोट पूरी तरह से फर्जी हैं।
जब हम मशीन को अनुमानित, अच्छी तरह से परिभाषित क्रम में बयानों को निष्पादित करना चाहते हैं, तो उसके लिए उपकरण निष्पादन के एक थ्रेड के भीतर विवरणों का अनुक्रमण है: S1 ; S2
। विवरण S1
S2
से पहले "निर्धारित" है।
हम धागे का उपयोग करते हैं जब हम महसूस करते हैं कि कुछ क्रियाएं स्वतंत्र हैं और उनका शेड्यूलिंग ऑर्डर महत्वपूर्ण नहीं है, और वास्तविक समय की घटनाओं या एकाधिक प्रोसेसर पर कंप्यूटिंग के लिए अधिक समय पर प्रतिक्रिया की तरह प्रदर्शन लाभ प्राप्त किए जा सकते हैं।
कई बार जब कई धागे के बीच शेड्यूलिंग ऑर्डर महत्वपूर्ण हो जाते हैं, तो यह प्राथमिकता नामक अवधारणा के तहत आता है। प्राथमिकता हल करती है कि पहले क्या होता है जब एन कथन में से कोई भी संभावित रूप से निष्पादित करने के लिए निर्धारित किया जा सकता है। मल्टीथ्रेडिंग के तहत ऑर्डर करने के लिए एक अन्य टूल क्यूइंग है। घटनाओं को एक या अधिक धागे से कतार में रखा जाता है और एक एकल सेवा धागा कतार क्रम में घटनाओं को संसाधित करता है।
नीचे की रेखा है, pthread_cond_broadcast
की नियुक्ति निष्पादन आदेश को नियंत्रित करने के लिए एक उपयुक्त उपकरण नहीं है। यह निष्पादन आदेश को इस अर्थ में अनुमानित नहीं करेगा कि कार्यक्रम अचानक एक ही है, हर मंच पर पुनरुत्पादित व्यवहार।
बस स्पष्ट होने के लिए, आप क्या चाहते हैं एन सेक तक इंतजार करना है, जब तक कि आप जल्दी से जागृत न हों? –
हाँ बस यही। शायद सेफफोर्स एक बेहतर सौदा है। –