मुझे लगता था कि मैं एक बुद्धिमान बुद्धिमान व्यक्ति था।
सेब की "थ्रेडिंग प्रोग्रामिंग गाइड" ने मेरी अहंकार को आत्मविश्वास बनाए रखा है।उद्देश्य-सी रन लूप रोकने और विधि को फिर से शुरू करने के लिए?
मेरे पास एक विधि है जो मैं द्वितीयक धागे पर बार-बार चलाना चाहता हूं, नीचे दिए गए उदाहरण में मैंने इसे निम्नलिखित कहा है:
मैं बार-बार रुकने और इस विधि की बार-बार कॉलिंग शुरू करने में सक्षम होना चाहता हूं।
कोड धागा शुरू होता है।
अगर बूलियन मान stuffToDo सच है,
तो यह doStuff कॉल:
अन्यथा
यह थोड़ा आराम है।
तब तक यह दोबारा लूप करता है जब तक कि मैं इसे
मेरा वर्तमान कोड अपर्याप्त लगता है, क्योंकि यह 'सामान टोडो' की जांच करता रहता है जब भी ऐसा करने के लिए कुछ भी नहीं होता है।
मैं सामान से छुटकारा पा सकता हूं और केवल आवश्यकतानुसार थ्रेड को रद्द कर सकता हूं।
यह भी अपर्याप्त लगता है, और इसका मतलब है कि मुझे सावधान रहना होगा कि मेरे पास पहले से चलने पर एक नया धागा गलती से न हो।
मुझे यकीन है कि इस सवाल का जवाब कुशलता से मेरी स्थिति को सुलझाने एप्पल के "प्रोग्रामिंग गाइड सूत्रण" के "रन पाश प्रबंधन" खंड में कहीं पाया जा सकता है के लिए कर रहा हूँ
शायद यह कस्टम इनपुट सूत्रों
शामिल है लेकिन मैं वास्तव में हूँ इस दस्तावेज़ को चुनौतीपूर्ण खोजना।
ऐसा लगता है कि यह दस्तावेज़ मेरे दिमाग में बहुत सारे धागे पैदा कर रहा है और गणना एक रुकावट के लिए पीसती है।
enum eRenderThreadMode
{
render_not_started,
render_run,
render_cancel,
render_finished
};
- (IBAction) startThread:(id)sender
{
self.renderThreadMode = render_run;
label.text = @"doing stuff";
[NSThread detachNewThreadSelector:@selector(keepDoingStuff) toTarget:self withObject:nil];
}
- (void)keepDoingStuff
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
while (renderThreadMode == render_run)
{
if(stuffToDo)
{
[self doStuff];
}
else
{
[NSThread sleepForTimeInterval:kLittleRest];
}
}
self.renderThreadMode = render_finished;
[pool release];
}
- (IBAction)stopThread:(id)sender
{
self.renderThreadMode = render_stop;
while (self.renderThreadMode == render_cancel)
{
[NSThread sleepForTimeInterval:kLittleRest];
}
}
सहमत हुए। एक एनएससीन्डिशन लॉक का प्रयोग करें। यह एक मानक थ्रेडिंग निर्माण है। –
धन्यवाद, ऐसा लगता है कि यह वही करेगा जो मैं चाहता हूं –
मैंने एनएससीडिशन लॉक की बजाय एम्स सुझाव के रूप में एनएससीओंडिशन का उपयोग किया। क्या आप वास्तव में हालत लॉक के बजाय हालत का मतलब था? यदि हां, तो आप एनएससींडिशन लॉक का उपयोग करके इसे कार्यान्वित करने की कल्पना कैसे करेंगे। मैंने पहले उद्देश्य सी धागे के साथ काम नहीं किया है, और विभिन्न दृष्टिकोणों के बारे में सुनने में दिलचस्पी है। –