Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Se puede pasar un thread a un método de una clase?

Estas en el tema de Se puede pasar un thread a un método de una clase? en el foro de C/C++ en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 23/10/2011, 20:38
 
Fecha de Ingreso: marzo-2007
Mensajes: 302
Antigüedad: 17 años, 1 mes
Puntos: 2
Pregunta Se puede pasar un thread a un método de una clase?

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 *)&param[i]);
		if(rc){
			exit(-1);
		}
	}	
}

-------------------------

Monitor.cpp

void registrarse(){
	pthread_mutex_lock(&mutex);
	cant++;
	pthread_mutex_unlock(&mutex);
}
Grx!
  #2 (permalink)  
Antiguo 24/10/2011, 05:11
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Se puede pasar un thread a un método de una clase?

No es necesario...lo que debes tener es una referencia a la variable mutex que no la veo definida por ahi.

mutex es un semaforo.

Etiquetas: threads
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:08.