2009-05-29 13 views
6

में थ्रेडिंग उद्देश्य सी में धागे हैं? यदि हां, तो वे कैसे घोषित और उपयोग किए जाते हैं?उद्देश्य-सी

यदि कोई उद्देश्य सी में मल्टीथ्रेडिंग के बारे में जानता है, तो कृपया मेरे साथ साझा करें।

धन्यवाद और सम्मान करता है।

उत्तर

9

यदि आप कोको (यानी मैक या आईफोन के लिए) का उपयोग कर विकास कर रहे हैं, तो आपके पास NSThread कक्षा तक पहुंच है, जिसका उपयोग मल्टीथ्रेडिंग के लिए किया जा सकता है। NSThread के लिए Googling आपको एपीआई मिलेगा।

आप का उपयोग कर की तरह यह घोषणा कर सकते हैं:

NSThread *mythread = [[NSThread alloc] initWithTarget:target selector:selector object:argument]; 

कहाँ लक्ष्य और चयनकर्ता वस्तु और चयनकर्ता आप के साथ एक धागा शुरू करना चाहते है, और तर्क चयनकर्ता को भेजने के लिए एक तर्क है।

फिर इसे शुरू करने के लिए [मिथ्रेड स्टार्ट] का उपयोग करें।

18

एक नए धागे में बस एक विधि को स्पिन करने का एक आसान तरीका उपयोग करना है।

+ (void)detachNewThreadSelector:(SEL)aSelector toTarget:(id)aTarget withObject:(id)anArgumentNSThread पर। यदि आप एकत्रित कचरा नहीं चला रहे हैं तो आपको अपना खुद का ऑटोोरिज़ पूल स्थापित करने की आवश्यकता है।

यदि आप मुख्य धागे को अवरुद्ध नहीं करना चाहते हैं तो एक और आसान तरीका उपयोग करना है।

NSObject

पर - (void)performSelectorInBackground:(SEL)aSelector withObject:(id)arg संगामिति आप किस प्रकार के बाद आप भी तो आप इसे अन्य बातों के अलावा कई धागे के बीच साझा कर सकते हैं NSOperation पर एक नज़र है कि आप मुक्त ताला दे सकते हैं लेना चाहिए पर निर्भर करता है।

3

तुम भी दिखाई दे सकता है में NSOperation

इस का एक उदाहरण देखने के लिए, MacResearch पर ड्रयू मककोरमैक पद पर एक नजर है।

+0

NSOperation की केवल iOS 4.0 या बाद का समर्थन करता है। –

2

अलग-अलग सामानों से दूर जाने से पहले न्यूट थ्रेड चयनकर्ता: ऐप्पल के आधिकारिक दस्तावेज़ीकरण को देखना सुनिश्चित करें। विकल्पों के उच्च स्तरीय अवलोकन (ऑपरेशन कतार, प्रेषण कतार, और ऐसे) के साथ, Concurrency Programming Guide है। और, निचले स्तर (और कम अनुशंसित) थ्रेडिंग पर एक नज़र के लिए, Threading Programming Guide है।

आप निश्चित रूप से पहले इस विषय पर ऐप्पल के बारे में क्या कहने के बिना धागे को कताई शुरू करना नहीं चाहते हैं। उन्होंने समवर्ती कार्यक्रम लिखना आसान और सुरक्षित बनाने के लिए GCD जैसी सामग्री के साथ बहुत काम किया है।

5

हाँ वहाँ उद्देश्य सी में सूत्रण अवधारणाओं हैं और

1>NSThread

[NSThread detachNewThreadSelector:@selector(startTheBackgroundJob) toTarget:self withObject:nil]; 

उद्देश्य सी में बहु सूत्रण प्राप्त करने के लिए इस में एक नया धागा पैदा करेगा कई तरह से देखते हैं पृष्ठभूमि। आपके मुख्य धागे से।

2>performSelector

[self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:YES]; 

का उपयोग करते हुए अपने मुख्य थ्रेड पर यूआई कार्य को अगर आप पृष्ठभूमि धागे से इस फोन ... तुम भी उपयोग कर सकते हैं

[self performSelectorInBackground:@selector(abc:) withObject:obj]; 

जो एक पैदा करेगा पृष्ठभूमि धागा।

3>NSoperation

Follow this link

4>का उपयोग पृष्ठभूमि सूत्र में और पूरा हो जाने पर GCD

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
     [self callWebService]; 
     dispatch_async(dispatch_get_main_queue(), ^{ 
      [self updateUI]; 
     }); 
    }); 

विल callWebService का उपयोग करना। यह मुख्य थ्रेड में updateUI होगा। More about GCD

यह है कि आईओएस में प्रयोग किया जाता है बहु सूत्रण के लगभग सभी तरीका है। उम्मीद है की यह मदद करेगा।

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

  • कोई संबंधित समस्या नहीं^_^