Wie in den Openpub-Dokumentationen erklärt,
pthread_exit()
beendet den Thread, der es aufruft.
In Ihrem Fall nennt es der Haupt-Thread wird beendet, während Ihre erzeugten Threads weiterhin ausgeführt werden. Dies wird meistens in Fällen verwendet, in denen der Haupt-Thread nur benötigt wird, um Threads zu erstellen und die Threads ihre Arbeit erledigen zu lassen
pthread_join
unterbricht die Ausführung des Threads, der ihn aufgerufen hat, es sei denn, der Ziel-Thread wird beendet
Dies ist nützlich, wenn Sie auf das Beenden von Threads warten möchten, bevor Sie im Haupt-Thread weiterverarbeiten.
Beide Methoden stellen sicher, dass Ihr Prozess endet nicht, bevor alle Ihre Threads beendet sind.
Die Join-Methode hat Ihren Thread der main
Funktion explizit auf alle Threads warten, die "beigetreten" werden sollen.
Die pthread_exit
Methode beendet Ihre main
kontrolliert funktionieren und einfädeln. main
hat die Besonderheit, dass die Endung main
ist Andernfalls würde Ihr gesamter Prozess einschließlich aller anderen Threads beendet.
Damit dies funktioniert, müssen Sie sicherstellen, dass keiner Ihrer Threads lokale Variablen verwendet, die in ihnen deklariert sind main
Funktion. Der Vorteil dieser Methode ist, dass Ihr main
muss nicht alle Threads kennen, die in Ihrem Prozess gestartet wurden, z. B. weil andere Threads selbst neue Threads erstellt haben, die main
weiß nichts über.
pthread_exit
beendet den aufrufenden Thread während pthread_join
setzt die Ausführung des aufrufenden Threads aus, bis der Ziel-Thread die Ausführung abgeschlossen hat.
Sie sind in der offenen Gruppendokumentation ziemlich gut im Detail erklärt:
- pthread_exit
- pthread_join