Sto lavorando su una piccola app scritta in ogg-c con l'aiuto del framework del cacao e sto avendo un problema di multithreading. Gradirei davvero che qualcuno potesse aiutarmi con alcune indicazioni su come terminare un thread secondario (lavoratore) dal thread principale?terminazione di un thread secondario dal thread principale (cacao)
- (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?
}
ho trovato qualcosa sul apple's docs, ma ciò che manca da questo esempio è la parte in cui la sorgente di ingresso runloop cambia il valore exitNow.
Inoltre, non userò molti thread nella mia app, quindi preferirei una soluzione semplice (con meno overhead) piuttosto che una più complessa che sia in grado di gestire facilmente molti thread, ma con più overhead generato (ad es. utilizzando serrature forse (?) al posto di runloops)
Grazie in anticipo
Funziona benissimo! Grazie! Ho un ciclo nella discussione, quindi la tua soluzione si adatta come un guanto senza alcuna interruzione di codice aggiuntiva :) – andi
Si potrebbe rendere l'intento del thread while mentre si cancella il ciclo mentre [! [[NSThread currentThread] isCancelled]) invece di while (1) e mettendo il controllo isCancelled in profondità nel codice di loop. –
@Barry Wark Buon punto. Immagino che mi aspettavo che ci fosse un'altra condizione (ad esempio.!) In quel ciclo. –