Buenas gente. Necesito una pequeña ayuda con pthreads y sus mutex.
El tema es así: tengo una class Mutex con un pthread_mutex_t adentro,
el constructor de la clase crea el mutex y se proveen los métodos lock
y unlock al usuario de la misma (el destructor destruye el mutex). Por
otro lado tengo otra clase "Bloqueadora" que tiene un puntero a la
clase Mutex, la funcionalidad de esta clase es, al instanciarla,
bloquear el mutex que recibe como parámetro y, al destruirla,
liberarlo (guarda un puntero Mutex* como atributo).
Ahora bien, tengo otra clase que tiene ciertos mutex estáticos
correspondientes a ciertos métodos de la clase que no deben poder ser
accedidos por más de un thread a la vez, para ello hago lo siguiente
en el código:
metodo lala(){
Bloqueadora locker(EstaClase::mutex_de_lala);
...
pepito;
...
}
Cuando corro el programa y tengo un solo thread accediendo a los
métodos problemáticos no hay drama, se ejecuta todo perfectamente
retornando lo que debe; pero cuando ejecuto más de un thread a la vez
los resultados no dan siempre lo que tienen que dar (a veces si, a
veces no). Todo esto me lleva a suponer que no estoy protegiendo bien
el código a través de los mutex. Alguna idea?.
Por oto lado, alguna forma EFECTIVA de comprobar la memoria con el uso
de threads conocen?. Porque estuve corriendo bastante tiempo el
valgrind sin encontrar errores y, cuando pensaba que estaba llegando a
la meta, me saltó con un leak descolgado por ahi que ahora no puedo
volver a reproducir (sin contar todos los que tira de por si la
libreria pthreads).
Salu2 y gracias.
PD: se necesita con urgencia :-S.
--
[EMAIL PROTECTED]
_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion