2013-04-09 9 views
6

को प्राथमिकता सेट करें जीसीडी 4 वैश्विक प्राथमिकता कतारों (उच्च, डिफ़ॉल्ट, निम्न, पृष्ठभूमि) के अनुसार ब्लॉक को एक कतार में प्रेषण करने में सक्षम बनाता है। मेरे पास मेरे ऐप में कई NSOperationQueues हैं लेकिन प्रत्येक को अलग प्राथमिकता में चलाने के लिए चाहते हैं। जैसा कि मैंने समझा था NSOperationQueue जीसीडी पर एक अमूर्त है, और NSOperationQueue (जीसीडी प्राथमिकता कतारों के समान) को विभिन्न प्राथमिकताओं को सेट करना चाहता हूं। क्या ऐसा करने का कोई तरीका है? (एक ऑपरेशन को प्राथमिकता निर्धारित करने के लिए संभव है लेकिन कतार में ही नहीं)।NSOperationQueue

उत्तर

1

NSOperationQueue Class Reference से एक उद्धरण। कतार के भीतर

संचालन (लेकिन अभी तक क्रियान्वित नहीं) खुद को प्राथमिकता के स्तर और अंतर-संचालन वस्तु निर्भरता के अनुसार संगठित है और उसके अनुसार क्रियान्वित कर रहे हैं कर रहे हैं।

इंटर-ऑपरेशन निर्भरता संचालन के लिए एक पूर्ण निष्पादन आदेश प्रदान करती है, भले ही वे ऑपरेशन अलग-अलग ऑपरेशन कतारों में स्थित हों। एक ऑपरेशन ऑब्जेक्ट को पर निष्पादित नहीं माना जाता है जब तक कि इसके सभी निर्भर संचालन निष्पादित नहीं हो जाते हैं। निष्पादित करने के लिए तैयार संचालन के लिए, ऑपरेशन कतार हमेशा अन्य तैयार संचालन के सापेक्ष उच्चतम प्राथमिकता वाले व्यक्ति को निष्पादित करता है।

डिजाइन द्वारा इसका मतलब है, आप कतार में प्राथमिकता निर्धारित नहीं कर सकते हैं, लेकिन NSOperationQueue संचालन के व्यक्तिगत प्राथमिकता स्तर के आधार पर व्यक्तिगत संचालन के लिए जीसीडी वैश्विक कतार का उपयोग करेगा।

+0

नहीं, NSOperationQueue केवल एक जीसीडी वैश्विक कतार का उपयोग करता है, डिफ़ॉल्ट प्राथमिकता एक। एनएसओपरेशन प्राथमिकता अवधारणा असंबंधित है। – das

+0

मैंने दावा नहीं किया कि यह विभिन्न प्राथमिकता स्तरों के साथ जीसीडी वैश्विक कतार का उपयोग करता है। मैंने जो कहा और कहने का मतलब यह है कि यह कार्य को निष्पादित करता है जो ऑपरेशन के व्यक्तिगत प्राथमिकता स्तर पर निर्भर करता है। @das – svena

+0

ठीक है, 'जीसीडी ग्लोबल कतार' (बहुवचन) के आपके उल्लेख ने मुझे उस प्रभाव को – das

-2

एनएसओपेरेशंस पर threadPriority सेट करने का प्रयास करें जिसे आप कतार में जोड़ते हैं।

+1

बहिष्कृत और केवल ओएस एक्स के लिए –

5

आईओएस 8 से शुरू होने पर, NSOperationQueue में qualityOfService संपत्ति है, जो मुझे लगता है कि ओपी का मतलब है। Class Reference से:

यह गुण सेवा स्तर आपरेशन करने के लिए लागू वस्तुओं कतार में जोड़ा निर्दिष्ट करता है। यदि ऑपरेशन ऑब्जेक्ट में एक स्पष्ट सेवा स्तर सेट है, तो उस मान का उपयोग इसके बजाय किया जाता है। [...]

सेवा स्तर प्राथमिकता को प्रभावित करते हैं जिसके साथ ऑपरेशन ऑब्जेक्ट सिस्टम संसाधनों जैसे सीपीयू समय, नेटवर्क संसाधन, डिस्क संसाधनों तक पहुंच प्रदान करता है, और इसी तरह। उच्च गुणवत्ता वाले सेवा स्तर के साथ संचालन सिस्टम संसाधनों पर अधिक प्राथमिकता दी जाती है ताकि वे अपना कार्य अधिक तेज़ी से कर सकें। आप सुनिश्चित करने के लिए सेवा स्तर का उपयोग करते हैं कि स्पष्ट उपयोगकर्ता अनुरोधों का जवाब देने वाले संचालन कम महत्वपूर्ण कार्य पर प्राथमिकता दी जाती हैं।

इसके अलावा iOS 8 में, आप बदल सकते हैं जो GCD कतार underlyingQueue संपत्ति के साथ प्रयोग किया जाता है, और इसलिए वांछित प्राथमिकता के साथ वैश्विक GCD कतार चुनें।

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