buenas de nuevo...
toy teniendo un problema con una aplicacion q usa pthread
tengo una aplicacion con muchos hilos, con un hilo que se ocupa solo de fijarse
si el usuario teclea una X para abortar el programa
(estoy encapsulando pthread en una clase Thread)
el codigo que ejecuta el hilo ThreadConsola seria el siguiente:
while (!_mustStop) {
if (toupper(getchar()) == 'X') {
_mustStop = true;
_cerrar = true;
std::cout << "Cerrar xq toco X" << std::endl;
}
}
_mustStop es una variablede la clase Thread que solo encapsula pthread, usada
para poder realizar un stop() desde afuera
_cerrar es atributo de ThreadConsola para marcar si se aborto el programa
desde el main hago lo siguiente:
ThreadConsola thConsola;
if (thConsola) {
thConsola.run(); //LINEA 28 de client_main.cpp
while (!thConsola.getCerrar()) {
}
thConsola.stop();
thConsola.join();
el run() llama el pthread_create
el join() llama pthread_join
cuando lo corro con valgrind el programa termina pero me tira el siguiente error
72 bytes in 1 blocks are possibly lost in loss record 2 of 2
==30428== at 0x401C6CA: calloc (vg_replace_malloc.c:279)
==30428== by 0x400E188: (within /lib/ld-2.3.6.so)
==30428== by 0x400E24B: _dl_allocate_tls (in /lib/ld-2.3.6.so)
==30428== by 0x414881F: pthread_create@@GLIBC_2.1 (in
/lib/tls/i686/cmov/libpthread-2.3.6.so)
==30428== by 0x804ABC2: Thread::run() (common_thread.cpp:23)
==30428== by 0x8049293: ImprimirSimulacion(std::string const&, unsigned
short const&) (client_main.cpp:28)
==30428== by 0x80494B0: main (client_main.cpp:49)
o sea, se queja de q no libero memoria al hacer el pthread_create() dentro de
thConsola.run();
la verdad q recien empiezo con el tema threads, por lo q no la tengo clara...
no se si estoy haciendo las cosas bien
lo que me trae dudas es que hace el join en este caso, xq el getchar es
"blockeante"
espero q el codigo sea suficiente para saber el origen del problema
gracias adelantadas
saludos_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion