¿Qué significa “unir” un hilo?

Para mi clase, se supone que debo averiguar qué es lo que está mal con un fragmento de código, y la parte que tengo problemas para descifrar es

// joining a thread blocks until that thread finishes a.join(); b.join(); 

¿Unir un hilo es lo mismo que bloquear un hilo? Porque creo que el objective de esta tarea es que no debes dejar los hilos desbloqueados.

¡Así es como un hilo espera la finalización de otro hilo!

Un buen caso de uso de join es: por ejemplo, la función main() / thread crea un hilo y no espera (usando join ) para que se complete el thread creado y simplemente se cierra, ¡entonces el thread recién creado también se detendrá!

Aquí hay una buena explicación de Thread Management en general y Thread Join en particular. ¡Y aquí hay algunos fragmentos de código que muestran algunos casos de uso de join y qué sucede cuando no lo usas!

El comentario lo dice todo, de verdad. Unirse a un hilo significa esperar a que se complete. Es decir, bloquear el hilo actual hasta que se complete otro.

Unirse a un hilo significa esperar hasta que ese hilo esté activo. Cuando el hilo salga, el hilo que llama join() continuará ejecutándose. Por lo tanto, en el ejemplo anterior, el subproceso (presumiblemente el subproceso principal) que está llamando a.join() y b.join() esperará hasta que ambos subprocesos terminen su trabajo y luego continúen ejecutando el código eso es después de b.join() .

Piense en iniciar un hilo como “forking” su proceso en dos hilos distintos de ejecución. Entonces, unirse es lo contrario: es donde estos dos hilos separados se unen (y solo el padre continúa desde allí).

  1. join () espera en un hilo para completar su ejecución.
  2. Necesita separar () un hilo o unir () un hilo para administrarlo.
  3. join () también, limpia el hilo de los recursos ocupados. Encontrará join () llamado en el destructor de una clase RAII por el mismo motivo.