El tema es que sleep(100) equivale a cien segundos, es decir un poco más de minuto y medio. Por lo tanto el while del thread principal pregunta si debe salir una vez cada cien segundos.
Cuando yo dije de incrementarlo no tuve en cuenta la unidad de tiempo que toma el sleep. Pensé que eran milisegundos. Por lo tanto, sleep(1) es la pausa de un segundo que yo había sugerido. Perdón por la confusión. On 10/16/07, John Knight <[EMAIL PROTECTED]> wrote: > > buenas... > tengo otra duda mas q interesante > como bien me dijeron ahi incremente el tiempo del sleep en el while del > main en q se valida q no se aborto y q no termino el thread del proceso > con sleep (1) funciona bien > al terminar el thread de procesamiento, el programa se cierra > automaticamente y no hay ningun error > ahora bien, incremento el sleep(100) que me parece un tiempo muy > razonable... > sin embargo > ahora al terminar el thread de procesamiento el programa no termina al > instante como en el otro > se keda haciendo "algo" y a los 30 segundos se cierra solo (al ejecutarlo > por consola) > hice el paso por paso... el thread de procesamiento efectivamente termina > el thread de consola se keda trabado en el getchar (xq no aborte) > quiero seguir con el paso a paso pero no hace nada > (el programa no hace nada mas que esto q menciono: hilo para abortar y > procesar) > volvi el sleep a 1 y funciona bien > alguna idea que puede ser? > > > ----- Original Message ----- > *From:* John Knight <[EMAIL PROTECTED]> > *To:* Una lista para consultas de programación<[email protected]> > *Sent:* Monday, October 15, 2007 11:42 PM > *Subject:* Re: [Prog] problema con pthread > > gracias de nuevo por la claridad :D > > ----- Original Message ----- > *From:* Leandro Fernández <[EMAIL PROTECTED]> > *To:* Una lista para consultas de programación<[email protected]> > *Sent:* Monday, October 15, 2007 9:43 PM > *Subject:* Re: [Prog] problema con pthread > > Entiendo. > > En ese caso (ahora que el while tiene las dos condiciones) yo calcularía > el tiempo más grande posible para el sleep() y lo usaría. > > Por ejemplo, podemos asumir que es suficiente con preguntar una vez por > segundo a la consola si el usuario pidió salir. Por otra parte supongamos > que la simulación tiene un ciclo por segundo. Entonces podríamos hacer que > el while tenga un sleep de un segundo. > > Mientras más grande el sleep() menos CPU consume el thread. Pero eso te da > un retraso en la salida del programa de hasta el tiempo que pongas en el > slee(). Si ponés diez segundos el usuario podría ver que el programa tarda > hasta diez segundos después que él presionó la X y esto podría resultarle > extraño. > Ponerle un sleep(1) o sleep(0) no te va a servir de nada para bajar el > tiempo de consumo de CPU. Es mejor que no ponerlo, pero lo ideal es un > tiempo generoso en función de las necesidades. > > On 10/15/07, John Knight <[EMAIL PROTECTED]> wrote: > > > > si tenes razon > > pero en este caso estoy trabajando con muchos hilos, dos de los cuales > > son > > +)uno el de la consola para la X > > +)otro que hace un procesamiento > > el main deberia terminar cuando se aborta o cuando se termine el > > proceso, por eso necesito el while en el main > > el tema es que el getchar es bloqueante y si pongo eso en el main estoy > > frito > > > > thConsola.run(); > > thSimulacion.run(); > > while ((!thConsola.getCerrar()) && (!thSimulacion.getTerminado)) { > > } > > thConsola.stop(); thSimulacion.stop(); > > thConsola.join(); thSimulacion.join(); > > tengo otra duda > > recien probando esto, cuando finaliza el thread de procesamiento se > > cuelga con el abortar xq el getchar es bloqueante > > hasta ahora lo que tenia era en la clase Thread el stop que como dije > > antes es para avisar que deberia terminar "de forma elegante", o sea q pare > > cuando pueda... > > pero en este caso, deberia agregar un metodo en Thread que sea kill() > > por ejemplo, no? > > pero el tema no se como hacer para parar el thread de forma abrupta... > > estaria bien hacer esto? > > gracias Leandro por tus respuestas > > saludos > > PD: deberia tener un sleep(1) el while del main? > > > > ----- Original Message ----- > > *From:* Leandro Fernández <[EMAIL PROTECTED]> > > *To:* Una lista para consultas de > > programación<[email protected]> > > *Sent:* Monday, October 15, 2007 6:20 PM > > *Subject:* Re: [Prog] problema con pthread > > > > No, simplemente no deberías usar ese while si lo único que vas a hacer > > ahí es esperar al otro thread. Nuevamente, vos decís que hay otros threads > > pero parece que el principal sólo espera a uno de los threads. El de > > consola. Eso no está bien. En todo caso si tenés threads trabajando y el > > principal no tiene nada que hacer, resolvé el tema de la consola en ese > > mismo thread. > > > > En todo caso en lugar de un while deberías hacer join() del thread > > directamente. Dado que es ese thread el que determina el final de la > > aplicación. Pero eso no tiene ningún sentido. Se resuelve en un sólo thread. > > > > Tal vez sería bueno que diagrames los threads que tenés y qué función > > cumple cada uno. Luego te vas a dar cuenta que si un thread lanza a otro y > > se queda a esperar que ese termine, eso se simplifica a un sólo thread. > > > > Distinto sería lanzar N threads y esperar que todos terminen para salir > > de la aplicación. > > > > On 10/15/07, John Knight < [EMAIL PROTECTED]> wrote: > > > > > > > > > > > > agregando una duda... > > > cuando hago > > > > > > thConsola.run(); //LINEA 28 de client_main.cpp > > > while (!thConsola.getCerrar()) { > > > } > > > deberia tener un sleep(1) adentrodel while para que no consuma tanta > > > CPU? > > > > > > grax de nuevo por la info :D > > > saludos > > > > > > ------------------------------ > > > > _______________________________________________ > > Lista de correo Programacion. > > [email protected] > > http://listas.fi.uba.ar/mailman/listinfo/programacion > > > > ------------------------------ > > > > No virus found in this incoming message. > > Checked by AVG Free Edition. > > Version: 7.5.488 / Virus Database: 269.14.12/1072 - Release Date: > > 15/10/2007 05:55 p.m. > > > > > > _______________________________________________ > > Lista de correo Programacion. > > [email protected] > > http://listas.fi.uba.ar/mailman/listinfo/programacion > > > > > > > -- > _Leo_ > (aka Lele) > > ------------------------------ > > _______________________________________________ > Lista de correo Programacion. > [email protected] > http://listas.fi.uba.ar/mailman/listinfo/programacion > > ------------------------------ > > No virus found in this incoming message. > Checked by AVG Free Edition. > Version: 7.5.488 / Virus Database: 269.14.12/1072 - Release Date: > 15/10/2007 05:55 p.m. > > ------------------------------ > > _______________________________________________ > Lista de correo Programacion. > [email protected] > http://listas.fi.uba.ar/mailman/listinfo/programacion > > ------------------------------ > > No virus found in this incoming message. > Checked by AVG Free Edition. > Version: 7.5.488 / Virus Database: 269.14.12/1072 - Release Date: > 15/10/2007 05:55 p.m. > > > _______________________________________________ > Lista de correo Programacion. > [email protected] > http://listas.fi.uba.ar/mailman/listinfo/programacion > > -- _Leo_ (aka Lele)
_______________________________________________ Lista de correo Programacion. [email protected] http://listas.fi.uba.ar/mailman/listinfo/programacion
