Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Consulta: la creación de threads puede hacer que no se ejecute parte del main?

Estas en el tema de Consulta: la creación de threads puede hacer que no se ejecute parte del main? en el foro de C/C++ en Foros del Web. Hola, quería saber porque luego de la función crear() no se ejecuta lo que sigue en el main (en un principio pensé que era por ...
  #1 (permalink)  
Antiguo 18/10/2011, 21:27
 
Fecha de Ingreso: marzo-2007
Mensajes: 302
Antigüedad: 17 años, 1 mes
Puntos: 2
Pregunta Consulta: la creación de threads puede hacer que no se ejecute parte del main?

Hola, quería saber porque luego de la función crear() no se ejecuta lo que sigue en el main (en un principio pensé que era por el exit pero comprobé que ahí no entraba , así que nose porque es que no sale en pantalla la última línea de la aplicación).

Grx!

Código:
void *my_thread_function(void *arg){
	cout << "Thread Function"; 
}

void crear(){
	int rc;
	pthread_t my_thread;
	rc = pthread_create(&my_thread, NULL, my_thread_function, NULL);
	if(rc!=0){
		exit(-1);
	}
	pthread_exit(NULL);
	
}

int main(int argc, char *argv[]) {
	cout << "Creando Threads";
	crear();	
	cout << "Continua la aplicacion";  // esta es la línea que nunca se llega a mostrar
	return 0;	
}
  #2 (permalink)  
Antiguo 18/10/2011, 22:06
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: Consulta: la creación de threads puede hacer que no se ejecute parte del m

1. thread principal deberia hacer: main() -> crear() -> vuelta a main()
2. thread principal crea otro thread
3. deberia quedar

thread principal: main() -> crear() -> vuelta a main()
thread creado: -> my_thread_function()

4. pero el thread principal ejecuta pthread_exit(NULL), entonces queda:

thread principal: main() -> crear() -> muerte de thread
thread creado: -> my_thread_function()
__________________
Visita mi perfil en LinkedIn
  #3 (permalink)  
Antiguo 21/10/2011, 16:57
 
Fecha de Ingreso: marzo-2007
Mensajes: 302
Antigüedad: 17 años, 1 mes
Puntos: 2
Pregunta Respuesta: Consulta: la creación de threads puede hacer que no se ejecute parte del m

Pero el pthread_exit(NULL); que se ejecuta no es los threads que se estan creando? Osea que para que se ejecute todo eso debería hacerlo como última linea del main ?

Grx!
  #4 (permalink)  
Antiguo 21/10/2011, 18:22
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: Consulta: la creación de threads puede hacer que no se ejecute parte del m

Creo que la respuesta esta en el comportamiento que ves que ocurre. No se ejecuta algo en el main(), segun tu descripcion. Por que? Segun yo, por el pthread_exit() que le pusiste al thread principal. Quitalo y ve las diferencias, si es que las hay.
__________________
Visita mi perfil en LinkedIn
  #5 (permalink)  
Antiguo 22/10/2011, 20:24
 
Fecha de Ingreso: marzo-2007
Mensajes: 302
Antigüedad: 17 años, 1 mes
Puntos: 2
Respuesta: Consulta: la creación de threads puede hacer que no se ejecute parte del m

Grx! He quitado el pthread_exit y ha funcionado :D

Etiquetas: threads
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:16.