2011-10-27 10 views
8

के साथ एकाधिक आमंत्रणों को मेरे लिए बनाए गए कस्टम थ्रेड पर संबंधित कार्यों का एक छोटा सा सेट निष्पादित करने की आवश्यकता है। कार्य विभिन्न वर्गों से निर्धारित किए जाएंगे। मैं कस्टम थ्रेड बनाने और उस पर कार्य निर्धारित करने के लिए जीसीडी के dispatch_queue_create का उपयोग करने की योजना बना रहा हूं। ध्यान दें कि सभी संबंधित कार्यों को क्रम में केवल एक थ्रेड पर निष्पादित करना होगा।
तो मेरा सवाल यह है कि अगर मैं अपने कोडबेस में कई कक्षाओं के समान लेबल के साथ dispatch_queue_create ("my_custom_thread_label", NULL) पर कॉल करता हूं, तो क्या यह अंततः केवल एक थ्रेड पर नक्शा करेगा? या क्या मुझे इसे एक ही स्थान पर बनाने की आवश्यकता है और जब भी आवश्यकता हो तो इसका संदर्भ प्राप्त करें? धन्यवाद।dispatch_queue_create एकाधिक लेबल

उत्तर

8

आपको इसे एक ही स्थान पर बनाने और पॉइंटर को पास करने की आवश्यकता है।

+4

लेकिन क्या होता है यदि आप एक ही लेबल के साथ 'dispatch_queue_create' को कई बार कॉल करते हैं? – Endophage

+2

यह आपको कतार का एक नया उदाहरण देता है और पुरानी एक लीक, यह एक वस्तु की तरह है। – odyth

+0

odyth - जो प्रलेखन के साथ असंगत लगता है: https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man3/dispatch_queue_create.3.html लेबल केवल FYI प्रदान किया जाता है, और (में तथ्य) वैकल्पिक। आप एक खाली लेबल प्रदान कर सकते हैं। प्रत्येक बार जब आप d_q_c() को कॉल करते हैं तो यह एक * नई * कतार वस्तु देता है - कोई रिसाव नहीं। –

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