Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> IOS

ग्रैंड सेंट्रल डिस्पैच (जीसीडी)

<घंटा/>

ग्रैंड सेंट्रल डिस्पैच (जीसीडी) - ऐप्पल के मैक ओएस एक्स और आईओएस ऑपरेटिंग सिस्टम के लिए एक तकनीक-सी भाषा, एक एपीआई और एक रन-टाइम लाइब्रेरी के एक्सटेंशन का संयोजन है जो एप्लिकेशन डेवलपर्स को कोड के अनुभागों को चलाने के लिए पहचानने की अनुमति देता है। समानांतर। ओपनएमपी की तरह, जीसीडी थ्रेडिंग के अधिकांश विवरणों का प्रबंधन करता है। GCD C और C++ भाषाओं के एक्सटेंशन की पहचान करता है जिन्हें ब्लॉक के रूप में जाना जाता है। एक ब्लॉक केवल कार्य की एक स्व-निहित इकाई है। यह एक कैरेट द्वारा निर्दिष्ट किया जाता है जो ब्रेसिज़ की एक जोड़ी के सामने डाला जाता है { }। ब्लॉक का एक सरल उदाहरण नीचे दिखाया गया है &माइनस;

{
   ˆprintf("This is a block");
}

यह एक प्रेषण कतार पर रखकर रन-टाइम निष्पादन के लिए ब्लॉक शेड्यूल करता है। जब यह एक कतार से एक ब्लॉक को हटाता है, तो यह ब्लॉक को उस थ्रेड पूल से उपलब्ध थ्रेड को असाइन करता है जिसे वह प्रबंधित करता है। GCD दो प्रकार की प्रेषण कतारों की पहचान करता है:धारावाहिक और समवर्ती। सीरियल कतार में रखे ब्लॉक FIFO क्रम में हटा दिए जाते हैं। एक बार एक ब्लॉक को कतार से हटा दिए जाने के बाद, दूसरे ब्लॉक को हटाने से पहले उसे निष्पादन पूरा करना होगा। प्रत्येक प्रक्रिया की अपनी धारावाहिक कतार होती है (जिसे मुख्य कतार के रूप में जाना जाता है)। डेवलपर्स अतिरिक्त सीरियल क्यू बना सकते हैं जो विशेष प्रक्रियाओं के लिए स्थानीय हैं। सीरियल कतार कई कार्यों के क्रमिक निष्पादन को सुनिश्चित करने के लिए उपयोगी हैं। समवर्ती कतार में रखे गए ब्लॉक को भी FIFO क्रम में हटा दिया जाता है, लेकिन एक समय में कई ब्लॉकों को हटाया जा सकता है, इस प्रकार कई ब्लॉक समानांतर में निष्पादित हो सकते हैं। तीन सिस्टम-व्यापी समवर्ती प्रेषण कतारें हैं, और उन्हें प्राथमिकता के अनुसार प्रतिष्ठित किया जाता है:निम्न, डिफ़ॉल्ट और उच्च। प्राथमिकताएं ब्लॉकों के सापेक्ष महत्व के अनुमान का प्रतिनिधित्व करती हैं। काफी सरलता से, उच्च प्राथमिकता वाले ब्लॉकों को उच्च प्राथमिकता वाली प्रेषण कतार में रखा जाना चाहिए। निम्न कोड खंड डिफ़ॉल्ट-प्राथमिकता समवर्ती कतार प्राप्त करने और प्रेषण async() फ़ंक्शन का उपयोग करके कतार में एक ब्लॉक सबमिट करने को दर्शाता है -

dispatch_queue_t queue = dispatch_get_global_queue
(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch async(queue, ˆ{ printf("This is a block."); });

आंतरिक रूप से, GCD का थ्रेड पूल POSIX थ्रेड्स से बना होता है। जीसीडी सक्रिय रूप से पूल का प्रबंधन करता है, जिससे आवेदन की मांग और सिस्टम क्षमता के अनुसार थ्रेड्स की संख्या बढ़ने और सिकुड़ने की अनुमति मिलती है।


  1. जावास्क्रिप्ट में स्कोपिंग को ब्लॉक करें।

    ब्लॉक स्कोप दो {घुंघराले ब्रेसिज़} के बीच का क्षेत्र है जो लूप्स के बीच हो सकता है, यदि कंडीशन या स्विच स्टेटमेंट। ES2015 में पेश किए गए let और const हमें ब्लॉक स्कोप्ड वेरिएबल बनाने की अनुमति देते हैं जिन्हें केवल उन ब्लॉक के अंदर ही एक्सेस किया जा सकता है। जावास्क्रिप्ट में ब्लॉक स्कोपिंग दिखाने

  1. जावास्क्रिप्ट में कतार का कार्यान्वयन

    जावास्क्रिप्ट में क्यू को लागू करने के लिए कोड निम्नलिखित है। उदाहरण दस्तावेज़ बॉडी { फॉन्ट-फ़ैमिली:सेगो यूआई, ताहोमा, जिनेवा, वर्दाना, सेन्स-सेरिफ़; } .result {फ़ॉन्ट-आकार:18पीएक्स; फ़ॉन्ट-वजन:500; रंग:नीला बैंगनी; } बटन {पैडिंग:6px; मार्जिन:4px; }जावास्क्रिप्ट में क्यू का क्रियान्वयन।EnqueueDequeu

  1. समवर्ती समझाया गया:एक बहु-थ्रेडेड आईओएस ऐप कैसे बनाएं

    IOS में Concurrency एक बड़ा विषय है। इसलिए इस लेख में मैं कतारों और ग्रैंड सेंट्रल डिस्पैच (जीसीडी) ढांचे से संबंधित एक उप-विषय पर ज़ूम इन करना चाहता हूं। विशेष रूप से, मैं धारावाहिक और समवर्ती कतारों के बीच के अंतरों के साथ-साथ सिंक्रोनस और एसिंक्रोनस निष्पादन के बीच के अंतरों का पता लगाना चाहता