मेरे पास 2 प्रोजेक्ट हैं। एक एमएफसी स्टाइल के बिना सी ++ बिल्डर द्वारा बनाया गया है। और दूसरा एक वीसी ++ एमएफसी 11.ऑडियो बंद होने पर थ्रेड धीमे होते हैं
जब मैं धागा बनाता हूं और एक चक्र बनाता हूं - मान लीजिए कि यह चक्र Sleep(10)
का उपयोग करके 1 से 100 तक प्रगति पट्टी स्थिति में जोड़ता है, यह सी ++ बिल्डर दोनों के लिए निश्चित रूप से काम करता है और सी ++ एमएफसी।
अब, Sleep(10)
10 मिलीसेकंड प्रतीक्षा है। ठीक। लेकिन समस्या केवल तभी होती है जब मेरे पास खुले मीडिया प्लेयर, विनम्प या कुछ भी "ध्वनि" उत्पन्न करता है। अगर मैं सभी मीडिया प्लेयर, विनम्प और अन्य ध्वनि कार्यक्रम बंद करता हूं, तो मेरे धागे 10 मिलीसेकंड से धीमे हो जाते हैं।
यह 50-100 ms/each
जैसा लगता है। अगर मैं कोई संगीत खोलता हूं, तो यह सामान्य रूप से काम करता है जैसा कि मैंने उम्मीद की थी।
मुझे कोई जानकारी नहीं है कि यह क्यों हो रहा है। मैंने पहली बार सोचा कि मैंने एमएफसी ऐप के अंदर गलती की है लेकिन सी ++ बिल्डर भी धीमा क्यों है?
और हाँ, मुझे सकारात्मक यकीन है कि यह ध्वनि से संबंधित है क्योंकि मैंने अपनी खिड़कियों को फिर से बनाया है, सब कुछ अक्षम कर दिया है। आखिर में मैंने पाया कि ध्वनि मुद्दा।
क्या मेरे कोड को कुछ चाहिए?
अद्यतन:
अब, मैं कोड का पालन किया और पाया कि मैं 1 मिलीसेकंड प्रतीक्षा करने के लिए इस तरह के क्षेत्रों में Sleep(1)
इस्तेमाल किया। इसका कारण, मैं एक वस्तु को बाएं से दाएं स्थानांतरित करता हूं। अगर मैं इस नींद को हटा देता हूं तो चलती दिखाई नहीं दे रही है क्योंकि यह बहुत तेज़ है। तो, मुझे Sleep(1)
का उपयोग करना चाहिए। Sleep(1)
के साथ, यदि पर पर ऑडियो काम करता है तो यह काम करता है। यदि ऑडियो से बहुत धीमा है, तो ऑडियो बहुत धीमा है।
for (int i = 0; i <= 500; i++) {
theDialog->staticText->SetWindowsPosition(NULL, i, 20, 0, 0);
Sleep(1);
}
तो, इसके बारे में सुझावों की वास्तव में सराहना की जाती है। मुझे क्या करना चाहिए?
मुझे पता है कि यह गलत तरीका है। मुझे कुछ और उपयोग करना चाहिए जो उचित और मान्य है। लेकिन वास्तव में क्या? कौन सा फ़ंक्शन या क्लास स्थिर ग्रंथों को एक स्थिति से दूसरे स्थान पर आसानी से स्थानांतरित करने में मेरी सहायता करता है?
इसके अलावा, प्राथमिकता को बदलने में मदद नहीं मिली है।
अद्यतन 2:
अद्यतन 1 एक एक और सवाल :) कम से कम 10 मिलीसेकंड के लिए
दिलचस्प। जब आप अंतर देखते हैं तो क्या आपकी प्रक्रिया की प्राथमिकता अभी भी वही है? – Brad
प्रक्रियाओं की प्राथमिकताएं समान हैं। दूसरी दिलचस्पी बात यह है कि, यदि मैं मीडिया प्लेयर खोलता हूं (लेकिन संगीत नहीं चलाता) तो मेरा थ्रेड प्रोग्राम 2% CPU और थ्रेड कार्यों के साथ चलता है। अगर मैं मीडिया प्लेयर बंद करता हूं, तो तुरंत धीमा हो जाता है और इसमें 0% सीपीयू लगता है। – xangr
यह सीपीयू की आवृत्ति को थ्रॉटल करने वाले प्रोसेसर के कारण हो सकता है। – johnathon