Los subprocesos hijo terminan cuando finaliza el subproceso primario

Estaba haciendo una progtwigción multiproceso en Visual Studio C ++ usando las llamadas beginthreadex, endthreadex.

Creo un hilo hijo thread1. El subproceso secundario se ejecuta en una función que nunca sale ya que tiene un ciclo infinito. Ahora, si el hilo principal termina con error o finaliza con éxito, ¿el hilo hijo también sale? Mi duda es: ¿hay alguna situación en la que el hilo hijo esté vivo incluso después de que salga el progtwig principal?

Para linux, ¿cómo debería ser este caso?

No hay una relación padre / hijo entre los hilos. Si el hilo A crea el hilo B y luego el hilo A finaliza, el hilo B continuará ejecutándose.

La excepción a esto es cuando finaliza el hilo principal (es decir, el hilo que ejecuta la función main() ). Cuando esto sucede, el proceso finaliza y todos los demás hilos se detienen.

Como C y C ++ ordenan que al regresar de la función main eliminan todos los subprocesos en ejecución , sí, el proceso debería desaparecer. Y dado que el comportamiento lo realiza el tiempo de ejecución, la situación debería ser la misma en Linux.

Tan pronto como su proceso muera, se liberan todos los recursos (memoria, archivos e hilos)

La forma correcta de hacerlo: cuando llame a beginthread, mantenga el identificador devuelto en el subproceso principal y llame a WaitForObject antes de abandonar el progtwig ( unimos el subproceso padre con el subproceso secundario).

El hilo padre se bloqueará hasta que termine el hilo hijo. Si su hilo hijo tiene un ciclo infinito, puede definir un “punto de interrupción” y verificar si debe abandonarlo. Por ejemplo, usar una variable booleana compartida. Compruebe Interrumpir cortésmente para obtener más información.