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