6

के लिए प्राथमिकता सेट करें मैं जीसीडी के उपयोग से कस्टम निर्मित सीरियल एसिंक्रोनस कतार में उच्च प्राथमिकता कैसे सेट कर सकता हूं?कस्टम निर्मित सीरियल एसिंक्रोनस कतार

मैं कहाँ सुझाव dispatch_set_target_queue() & पास उच्च प्राथमिकता कतार (DISPATCH_QUEUE_PRIORITY_HIGH) जो कस्टम धारावाहिक अतुल्यकालिक कतार में एक समवर्ती कतार है का उपयोग करने के लिए किया जाता है this Q&A पर एक नज़र था।

मेरी समझ यह है कि यह सीरियल कतार निष्पादन पर सभी कार्यों को एक साथ निष्पादित करेगा। क्या मेरी समझ सही है? यदि हां, तो वैकल्पिक समाधान क्या है?

+1

क्यों बिल्ली वोट किसी को नीचे इस टिप्पणी के बिना होता? मैं जवाबों पर तीन उपरांतों की गिनती करता हूं (13 मई 2015 तक), इसका मतलब है कि इस सवाल से कम से कम तीन लोगों को उनकी कीमत की कुछ मदद मिली। लोग कभी-कभी इस साइट पर मतलब लगते हैं। –

उत्तर

5

आपकी कतार अभी भी धारावाहिक होगी। यह सिर्फ एक ही समय में, उच्च प्राथमिकता, वैश्विक, समवर्ती पृष्ठभूमि कतार के एक स्लॉट में अपने कार्यों का प्रदर्शन करेगा। एक बार बनाया गया, एक धारावाहिक कतार किसी भी माध्यम से "समवर्ती" नहीं किया जा सकता है।

इसी तरह, यदि आप एक समवर्ती कतार बनाते हैं और आप इसे एक धारावाहिक कतार को लक्षित करने के लिए सेट करते हैं, तो यह प्रभावी रूप से धारावाहिक बन जाता है।

यह सब man page में शामिल है।

+0

क्या आप ऐप्पल दस्तावेज के लिए कुछ संदर्भ लिंक जोड़ सकते हैं जो यह कहता है .. कोज़ मुझे कोई नहीं मिला। मुख्य_क्यू() पर केवल कतार की प्राथमिकता को सेट करने का एक तरीका भी है। –

+0

लिंक जोड़ा गया। आपका क्या मतलब है, "क्या मुख्य रूप से मुख्य_क्यू() में कतार की प्राथमिकता को सेट करने का कोई तरीका है?" यदि आपका मतलब है "क्या कतार प्राथमिकता को स्थापित करने का कोई तरीका है कि मुख्य धागे हमेशा सर्वोच्च प्राथमिकता है?" मेरा विश्वास, सबूत के बिना, यह होगा कि आप स्पष्ट रूप से ऐसा नहीं कर सकते हैं, लेकिन, व्यावहारिक रूप से, 'DISPATCH_QUEUE_PRIORITY_HIGH' से कम की कोई भी लक्षित प्राथमिकता प्रभावी रूप से उस आवश्यकता को पूरा करेगी। – ipmcc

+0

मुझे पता है कि टॉप सबसे प्राथमिकता कतार मुख्य Queue() है। मेरे द्वारा बनाई गई कस्टम कतार में अगली सर्वोच्च प्राथमिकता होगी। क्या यह स्पष्ट है? –

6

आईओएस से पहले 8 उच्च प्राथमिकता कतार में लक्ष्य कतार सेट करना यह है कि आप इसे कैसे प्राप्त करेंगे। लक्ष्य कतार समवर्ती होने के बावजूद आपकी कतार धारावाहिक रहेगी।

संस्करण 8.0 वहाँ एक और तरीका यह करने के लिए है के रूप में:

dispatch_queue_attr_t queueAttrs = dispatch_queue_attr_make_with_qos_class(
    DISPATCH_QUEUE_SERIAL, 
    QOS_CLASS_USER_INITIATED /* Same as DISPATCH_QUEUE_PRIORITY_HIGH */, 
    0 
); 

dispatch_queue_t queue = dispatch_queue_create("myqueue",queueAttrs); 
+0

'relative_priority' पैरामीटर के लिए प्रलेखन कहता है:" दिए गए गुणवत्ता-सेवा-सेवा वर्ग के लिए अधिकतम समर्थित शेड्यूलर प्राथमिकता से नकारात्मक ऑफ़सेट। यह मान '0' से कम होना चाहिए और' MIN_QOS_CLASS_PRIORITY' से अधिक होना चाहिए "। लेकिन आप यहां '0' पास कर रहे हैं। –

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