Esistono più thread che lavorano su un'attività. Una volta che un thread ha avuto successo, tutto il thread dovrebbe essere annullato, poiché il lavoro è stato completato. Come posso cancellare gli altri thread una volta che un thread è terminato con successo? Chi chiamerà lo pthread_cancel()
e in che modo il thread di successo indicherà main
o il thread che lo ha generato (valore restituito?).Annulla il thread POSIX al termine di un lavoro comune
UPDATE
Non voglio chiamare semplicemente exit
come voglio ora un certo controllo. Ad esempio, dopo che i thread sono stati cancellati, elaborerò il risultato trovato dal thread che ha avuto successo e sarà possibile eseguire qualche altra elaborazione, o semplicemente voler mantenere il processo in esecuzione per un po 'più di lavoro.
Perché hai bisogno di più thread per questa attività, se hai intenzione di buttare via il lavoro fatto da tutti tranne uno di loro? Basta fare il lavoro una volta in una discussione. – zwol
dico, ho una lista enorme da cercare linearmente, passerò segmenti di liste a thread diversi, e una volta che si trova una corrispondenza, ritorna. altri sono cancellati. – phoxis
Immagino che abbia senso in un contesto in cui una ricerca di forza bruta è l'unica opzione, ma se si dispone di una qualsiasi struttura nei dati, ci sono algoritmi migliori. – zwol