2012-12-07 13 views
5

का उपयोग करते समय पृष्ठभूमि धागे मेरे पास एक जीयूआई एप्लीकेशन है जो कुछ भारी पृष्ठभूमि प्रसंस्करण करने के लिए 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)

+1

"* ... जीयूआई और पृष्ठभूमि धागे के बीच बहुत ज्यादा युग्मन ... *" मैं डिजाइन में सोचने के लिए, शुरुआत करते हैं, sry। – alk

+0

मुझे यकीन नहीं है कि यह सहायक है - यूआई और पृष्ठभूमि थ्रेड के बीच बहुत सारे ट्रैफ़िक नहीं होने का कोई कारण नहीं है, और यह पार करने की प्रक्रिया को पार करने के लिए पोर्ट करना नहीं चाहता है। –

उत्तर

3

उच्च कुछ मदद मिल सकती है करने के लिए पृष्ठभूमि धागे की अच्छा मूल्य की स्थापना की सूची में setpriority।
इस का संदर्भ लें: Nice-Level for pthreads?

+2

धन्यवाद, मैंने इस पर विचार किया लेकिन दस्तावेज प्रक्रियाओं का उल्लेख करता है और धागे नहीं। यद्यपि यह * धागे के लिए काम करता है (मैंने अभी इसका परीक्षण किया है) - मुझे कुछ ऐसा करने पर भरोसा नहीं है जो दस्तावेज़ों के बारे में सीधे है (http://www.kernel.org/doc/man- पृष्ठों/ऑनलाइन/पृष्ठों/आदमी है 7/pthreads.7.html) –

संबंधित मुद्दे