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

Responder a