मैं सोच रहा हूं कि सी ++ 11 में कोई लॉकिंग नीति है जो थ्रेड को भूख से रोकती है।सी ++ में भुखमरी से थ्रेड को कैसे रोकें 11
मेरे पास धागे का एक समूह है जो एक म्यूटेक्स के लिए प्रतिस्पर्धा कर रहा है। अब, मेरी समस्या यह है कि एक महत्वपूर्ण खंड छोड़ने वाला धागा तुरंत उसी म्यूटेक्स के लिए प्रतिस्पर्धा शुरू करता है और अधिकांश समय जीतता है। इसलिए म्यूटेक्स पर इंतजार करने वाले अन्य थ्रेड भूख से मर रहे हैं।
मैं थ्रेड नहीं देना चाहता, एक महत्वपूर्ण खंड छोड़कर, कुछ थ्रेडों को म्यूटक्स को लॉक करने का मौका देने के लिए कुछ न्यूनतम समय के लिए सोना चाहता हूं।
मैंने सोचा कि वहां कुछ पैरामीटर होना चाहिए जो म्यूटेक्स पर प्रतीक्षा धागे के लिए उचित लॉकिंग सक्षम करेगा लेकिन मुझे कोई उचित समाधान नहीं मिला।
अच्छी तरह से मुझे std :: this_thread :: उपज() फ़ंक्शन मिला, जो थ्रेड निष्पादन के क्रम को फिर से निर्धारित करने का अनुमान लगाता है, लेकिन यह शेड्यूलर थ्रेड के लिए केवल संकेत है और शेड्यूलर थ्रेड कार्यान्वयन पर निर्भर करता है यदि यह थ्रेड को फिर से निर्धारित करता है या नहीं।
क्या कोई तरीका है कि सी ++ 11 में उसी म्यूटेक्स पर प्रतीक्षा करने वाले धागे के लिए उचित लॉकिंग नीति कैसे प्रदान की जाए? सामान्य रणनीतियों क्या हैं?
धन्यवाद
http://stackoverflow.com/questions/11666610/how-to-give-priority-to-privileged-thread-in-mutex-locking यह लिंक है जिसे आप मदद कर सकता है !! –
यह एक डिज़ाइन मुद्दा प्रतीत होता है जो थ्रेड भुखमरी मुद्दा नहीं है, क्या आप लोगों को इसे देखने और शायद मदद करने के लिए कोड पोस्ट कर सकते हैं। – dirvine
आपको आम तौर पर एक म्यूटेक्स के लिए प्रतिस्पर्धा करने वाले धागे का समूह नहीं होना चाहिए - यदि आपका कोड वह धारावाहिक है जो केवल एक धागा एक ही समय में काम कर सकता है, तो कम धागे क्यों नहीं हैं? वैध कारण हैं, लेकिन वे सभी वैध कारण नहीं हैं, और उनके पास अलग-अलग उत्तर हो सकते हैं! – Yakk