कतारों की अवधारणा का सबसे अच्छा तरीका पहले एहसास है कि बहुत कम स्तर पर है, वहाँ कतारों केवल दो प्रकार के होते हैं।
सीरियल कतार एकरूप हैं, लेकिन असामान्य हैं। यदि आप प्रत्येक सीरियल कतार में कार्यों का एक गुच्छा देते हैं, तो यह एक समय में केवल एक ही थ्रेड का उपयोग करके उन्हें एक बार चलाएगा। असामान्य पहलू यह है कि धारावाहिक कतार कार्यों के बीच एक अलग थ्रेड पर स्विच कर सकते हैं। सीरियल कतार हमेशा अगले कार्य पर जाने से पहले एक कार्य खत्म होने की प्रतीक्षा करते हैं। इस प्रकार कार्य एफआईएफओ आदेश में पूरा हो गए हैं। आपको जितनी जरूरत हो उतनी सीरियल कतार बना सकते हैं।
मुख्य कतार एक विशेष धारावाहिक कतार है। अन्य धारावाहिक कतारों के विपरीत, जो कि असामान्य हैं, उनमें वे कई धागे "डेटिंग" कर रहे हैं, लेकिन समय पर केवल एक ही, मुख्य कतार मुख्य धागे पर "विवाहित" है और सभी कार्यों को इस पर किया जाता है। मुख्य कतार मुख्य धागे के रनलोप के साथ अच्छी तरह से व्यवहार करती है ताकि छोटे ऑपरेशन यूआई और अन्य महत्वपूर्ण बिट्स को अवरुद्ध न करें। सभी धारावाहिक कतारों की तरह, एफआईएफओ आदेश में कार्य पूरा हो जाते हैं।
यदि सीरियल कतार एकरूप हैं, समवर्ती कतार विचित्र हैं। वे किसी भी उपलब्ध थ्रेड पर कार्यों को सबमिट करेंगे या सिस्टम लोड के आधार पर नए धागे भी बनाएंगे। वे अलग-अलग धागे पर एक साथ कई कार्य कर सकते हैं। यह महत्वपूर्ण है कि वैश्विक कतार में सबमिट किए गए कार्य थ्रेड-सुरक्षित हैं और साइड इफेक्ट्स को कम करते हैं। कार्य एफआईएफओ आदेश में निष्पादन के लिए जमा किए जाते हैं, लेकिन पूरा होने का आदेश गारंटी नहीं है।
इसे वापस लाना, सभी वैश्विक कतारों समवर्ती हैं और सभी उपयोगकर्ता कतारों धारावाहिक हैं।
यदि आपका लक्ष्य छवियों को डाउनलोड करना है, तो आप शायद एक सीरियल (उपयोगकर्ता) कतार चाहते हैं। छवियों को डाउनलोड करना बैंडविड्थ की अधिक चीज़ है। आप आमतौर पर एक समय में केवल एक (या कुछ) करना चाहते हैं।
संपादित: ब्लॉग पोस्ट के ऊपर जवाब पर विस्तार: महान उत्तर के लिए http://amattn.com/2013/08/28/grand_central_dispatch_gcd_summary_syntax_best_practices.html
आपके उत्तर के लिए धन्यवाद! – Jackie
मेरे अनुभव से, यह उत्तर सटीक नहीं है। उपयोगकर्ता कतार एक समवर्ती कतार के रूप में (और फ़ंक्शन) बनाया जा सकता है। – Guy