Como se explica en la documentación de openpub,
pthread_exit()
saldrá del hilo que lo llama.
En su caso, ya que main lo llama, main thread terminará mientras que los subprocesos generados continuarán ejecutándose. Esto se usa principalmente en casos en los que solo se requiere que el subproceso principal genere subprocesos y deje que los subprocesos hagan su trabajo
pthread_join
suspenderá la ejecución del subproceso que lo ha llamado a menos que el subproceso de destino finalice
Esto es útil en los casos en que desea esperar a que finalicen los subprocesos antes de continuar con el procesamiento en el subproceso principal.
Ambos métodos aseguran que su proceso no termina antes de que todos sus hilos hayan terminado.
El método de unión tiene su hilo del main
espera explícitamente todos los subprocesos que se van a "unir".
El pthread_exit
método termina su main
función y subproceso de forma controlada. main
tiene la particularidad de que termina en main
de lo contrario, terminaría todo el proceso, incluidos todos los demás subprocesos.
Para que esto funcione, debe asegurarse de que ninguno de sus subprocesos utilice variables locales declaradas dentro de ellos main
función. La ventaja de ese método es que su main
no tiene que conocer todos los subprocesos que se han iniciado en su proceso, por ejemplo, porque otros subprocesos han creado nuevos subprocesos que main
no sabe nada sobre.
pthread_exit
termina el hilo de llamada mientras pthread_join
suspende la ejecución del subproceso de llamada hasta que los subprocesos de destino completen la ejecución.
Están bastante bien explicados en detalle en la documentación del grupo abierto:
- pthread_exit
- pthread_join