Hola, quería hacer una consulta del siguiente código (pueden faltar partes de código, solo copie la parte de código necesaria para la consulta).
Cuando en la func2 se llama al método mon.registrarse , es necesario pasar el thread (de ser asi, como lo paso y como lo identifico luego en el método en cuestion) o no se debe pasar y automaticamente el thread ingresa en el metodo mencionado. ?
Y si dentro del metodo registrarse quiero dormir algun thread en particular como se debe hacer ?
Código:
main.cpp
Monitor mon;
void *func2(void *arg){
int tid;
string b;
datos *p = (datos *) (arg);
tid = (p->dato1);
b = (p->dato2);
mon.registrarse();
}
void crearThreads(int cant){
pthread_t cthreads[cant];
int i, rc;
for (i=0; i<cant; i++) {
param[i].dato1=i;
param[i].dato2="T";
rc = pthread_create(&cthreads[i], NULL, func2, (void *)¶m[i]);
if(rc){
exit(-1);
}
}
}
-------------------------
Monitor.cpp
void registrarse(){
pthread_mutex_lock(&mutex);
cant++;
pthread_mutex_unlock(&mutex);
}
Grx!