if (reader.is_lazy()) goto tldr;
है मुझे लगता है कि कुछ आई/ओ गहन पृष्ठभूमि प्रकार काम करता है एक पृष्ठभूमि धागा है।निर्धारित करें यदि वर्तमान धागा कम आई/ओ प्राथमिकता
SetThreadPriority(GetCurrentThread(), THREAD_MODE_BACKGROUND_BEGIN);
हालांकि, THREAD_MODE_BACKGROUND_BEGIN
विंडोज सर्वर 2008 या नए में ही उपलब्ध है, साथ ही Windows Vista: अन्य धागे और चल रही प्रक्रियाओं को खुश करने के लिए, मैं धागा प्राथमिकता करने के लिए "पृष्ठभूमि मोड" SetThreadPriority
उपयोग करते हुए, इस तरह सेट और नया, लेकिन प्रोग्राम को विंडोज सर्वर 2003 और एक्सपी पर भी अच्छी तरह से काम करने की जरूरत है। तो असली कोड इस तरह अधिक है:
if (!SetThreadPriority(GetCurrentThread(), THREAD_MODE_BACKGROUND_BEGIN)) {
SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_LOWEST);
}
इस के साथ समस्या यह है कि Windows XP पर यह पूरी तरह से बहुत ज्यादा आई/ओ का उपयोग करके प्रणाली को बाधित करेगा है। मेरे पास इस समस्या को कम करने के बदसूरत और शर्मनाक तरीके की योजना है, लेकिन यह मुझ पर निर्भर करता है कि यह निर्धारित करने में सक्षम है कि वर्तमान धागे में कम I/O प्राथमिकता है या नहीं।
अब, मुझे पता है कि मैं कौन सी धागा प्राथमिकता को स्टोर कर सकता हूं, स्टोर कर सकता हूं, लेकिन कार्यक्रम में नियंत्रण प्रवाह वास्तव में इसके लिए उपयुक्त नहीं है। मैं बाद में परीक्षण करने में सक्षम होना चाहूंगा कि वर्तमान धागे में कम I/O प्राथमिकता है या नहीं - यदि यह "पृष्ठभूमि मोड" में है।
tldr:
GetThreadPriority
मुझे यह जानकारी देने के लिए प्रतीत नहीं होता है, तो वह केवल सीपीयू प्राथमिकता देती है।
क्या यह निर्धारित करने का कोई तरीका है कि वर्तमान धागे में कम I/O प्राथमिकता है या नहीं?
कैसे GetThreadPriority काम नहीं करता है? – Goz
@Goz: यह केवल सीपीयू प्राथमिकता देता है। मैंने इसे शामिल करने के लिए प्रश्न को अद्यतन किया। –
मैं देखता हूं ... दिलचस्प। – Goz