का उपयोग करते समय पृष्ठभूमि धागे मेरे पास एक जीयूआई एप्लीकेशन है जो कुछ भारी पृष्ठभूमि प्रसंस्करण करने के लिए pthreads का उपयोग कर रहा है।pthreads (अच्छा, प्राथमिकता)
जबकि पृष्ठभूमि प्रसंस्करण चल रहा है जीयूआई बहुत ही उत्तरदायी नहीं है और मुझे लगता है कि ऐसा इसलिए है क्योंकि यह पृष्ठभूमि धागे द्वारा CPU समय से भूखा हो रहा है।
विंडोज़ पर आप पृष्ठभूमि थ्रेड पर SetThreadPriority (hThread, THREAD_PRIORITY_BELOW_NORMAL) कर सकते हैं और सब ठीक है।
हालांकि लिनक्स पर मैं pthreads का उपयोग कर रहा हूं और मुझे एक अच्छा विकल्प नहीं मिल रहा है।
मैंने पहले ही विचार किया है;
- :: sched_setscheduler (SCHED_FIFO) या :: sched_setscheduler (SCHED_RR) - इस रूप में यह (मेरे जीयूआई अनुप्रयोग के लिए अच्छा नहीं) जड़ की आवश्यकता है व्यवहार्य नहीं है - यह भी इस जीयूआई धागा कर देगा है जिस तरह से बहुत ज्यादा सीपीयू ; मैं केवल पृष्ठभूमि धागे पर जीयूआई को प्राथमिकता देना चाहता हूं।
- :: pthread_setschedparam लेकिन जब कुछ भी SCHED_FIFO के अलावा अन्य या SCHED_RR कि समर्थित नहीं है (:: sched_get_priority_min (SCHED_OTHER) और :: sched_get_priority_max (SCHED_OTHER) दोनों लौट 0)
- कई प्रक्रियाओं है और प्रयोग :: अच्छा इस्तेमाल करते हैं। इस व्यवहार्य बनाने के लिए जीयूआई और पृष्ठभूमि धागे के बीच बहुत अधिक युग्मन है (और इस डिजाइन में इतना कोड पोर्ट करना एक बड़ी मात्रा में काम है)
- पृष्ठभूमि थ्रेड को फिर से अच्छा करने के लिए :: सेटप्रिरीटी का उपयोग करें। यह काम करता है - लेकिन सीधे के खिलाफ क्या प्रलेखन कहते हैं: (ताकि संभावित "तय" हो सकता है बाद में पूरे सिस्टम में) PThreads documentation
मुझे विश्वास है कि इस जीयूआई क्षुधा के लिए काफी आम पैटर्न है कर रहा हूँ तो मुझे क्या याद आया?
मार्कस।
संपादित करें: जोड़ा गया :: विकल्प (धन्यवाद ZalewaPL)
"* ... जीयूआई और पृष्ठभूमि धागे के बीच बहुत ज्यादा युग्मन ... *" मैं डिजाइन में सोचने के लिए, शुरुआत करते हैं, sry। – alk
मुझे यकीन नहीं है कि यह सहायक है - यूआई और पृष्ठभूमि थ्रेड के बीच बहुत सारे ट्रैफ़िक नहीं होने का कोई कारण नहीं है, और यह पार करने की प्रक्रिया को पार करने के लिए पोर्ट करना नहीं चाहता है। –