Estimados:
Tengo una clase Mutex:
class Mutex {
pthread_mutex_t mutex;
Mutex::Mutex(){
pthread_mutexattr_t att;
pthread_mutexattr_settype(&att,PTHREAD_MUTEX_ERRORCHECK);
pthread_mutex_init(&mutex, &att);
}
int Mutex::lock(){
return pthread_mutex_lock(&mutex);
}
}
Mutex se usa desde una clase Lock:
class Lock{
Mutex & mutex;
Lock::Lock(Mutex & mutex):mutex(mutex) {
if ( EINVAL == mutex.lock() ) {
std::cerr << " Lock sobre lock invalido " << std::endl;
}
}
}
luego hago:
std::vector<Thread * > threads;
for (unsigned int i=0; i<threadCount; ++i) {
threads.push_back(new Thread());
threads[i]->start();
}
en start():
Lock lock(this->mutex);
en una clase que tiene definido:
Mutex mutex;
Con cierta frecuencia me da EINVAL.
Alguna pista de que puede estar ocurriendo?
Muchas gracias
Carlos Pantelides
_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion