से द्वितीयक थ्रेड को समाप्त करने के लिए मैं कोको फ्रेमवर्क की मदद से उद्देश्य-सी में लिखे गए एक छोटे से ऐप पर काम कर रहा हूं और मुझे एक बहुभाषी समस्या है। यदि मैं मुख्य धागे से माध्यमिक (कार्यकर्ता) धागे को समाप्त करने के बारे में कुछ मार्गदर्शन के साथ मेरी सहायता कर सकता हूं तो मैं वास्तव में इसकी सराहना करता हूं?मुख्य थ्रेड (कोको)
- (IBAction)startWorking:(id)sender {
[NSThread detachNewThreadSelector:@selector(threadMain:) toTarget:self withObject:nil];
}
- (void)threadMain
{
// do a lot of boring, time consuming I/O here..
}
- (IBAction)stop:(id)sender {
// what now?
}
मैं apple's docs पर ऐसा कुछ मिला है लेकिन क्या इस उदाहरण से याद आ रही है हिस्सा है जहां runloop इनपुट स्रोत बदल जाता exitNow मूल्य है।
इसके अलावा, मैं अपने ऐप में कई धागे का उपयोग नहीं करूँगा, इसलिए मैं एक अधिक जटिल विकल्प के बजाय एक सरल समाधान (कम ओवरहेड के साथ) पसंद करूंगा जो आसानी से कई थ्रेड प्रबंधित करने में सक्षम है, लेकिन अधिक ओवरहेड उत्पन्न होता है (जैसे। अग्रिम
यह बहुत अच्छा काम करता है! धन्यवाद! मेरे पास धागे में एक लूप है, इसलिए आपका समाधान बिना किसी अतिरिक्त कोड ब्रेकिंग के दस्ताने की तरह फिट बैठता है :) – andi
आप थ्रेड के इरादे को बना सकते हैं जबकि लूप स्पष्ट होकर (! [[NSThread currentThread] को रद्द कर दिया गया है) जबकि (1) और लूप कोड में गहरी जांच की गई है। –
@ बररी वार अच्छा बिंदु। मुझे लगता है कि मैं उस लूप में एक और शर्त (उदाहरण के लिए किया गया) होने की उम्मीद कर रहा था। –