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