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

Consulta: como obtengo el ID de un thread?

Estas en el tema de Consulta: como obtengo el ID de un thread? en el foro de C/C++ en Foros del Web. Necesito saber el id de los threads que creo, sin embargo ya probé utilizando con getpid() y con pthread_self() y en ambos casos siempre me ...
  #1 (permalink)  
Antiguo 15/10/2011, 22:42
 
Fecha de Ingreso: marzo-2007
Mensajes: 302
Antigüedad: 17 años, 1 mes
Puntos: 2
Pregunta Consulta: como obtengo el ID de un thread?

Necesito saber el id de los threads que creo, sin embargo ya probé utilizando con getpid() y con pthread_self() y en ambos casos siempre me da que todos los threads tienen el mismo id. Cual es la forma correcta ?

Aca dejo el código en cuestión:

Código:
#include <iostream>
#include <cstdlib>
#include <pthread.h>

using namespace std;

struct thread_data
{
	int thread_id;
	string name;
};

void *printId(void *threadid){

	long tid = (long)threadid;
	//cout<<"Misionero ID: "<<(int)getpid()<<"\n";
	cout<<"Misionero ID: "<<(unsigned int)pthread_self()<<"\n";
	pthread_exit(NULL);
}

void crearMisioneros(int cant_misioneros){
	pthread_t misioneros[cant_misioneros];
	int i, rc;
	for (i=0; i<cant_misioneros; i++) {
		rc = pthread_create(&misioneros[i], NULL, printId, (void *)i);
		if(rc){
			exit(-1);
		}
	}
	pthread_exit(NULL);	
}

int main(int argc, char *argv[]) {
	int cant_misioneros;
	cout << "CANTIDAD DE MISIONEROS: ";
	cin >> cant_misioneros;
	crearMisioneros(cant_misioneros);
}
grx!
  #2 (permalink)  
Antiguo 16/10/2011, 03:53
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
Respuesta: Consulta: como obtengo el ID de un thread?

getpid es para procesos (get process id), deberias usar gettid (get thread id).
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #3 (permalink)  
Antiguo 16/10/2011, 13:00
 
Fecha de Ingreso: marzo-2011
Mensajes: 54
Antigüedad: 13 años, 1 mes
Puntos: 11
Respuesta: Consulta: como obtengo el ID de un thread?

Eternal Idol, como puedes conseguir el id de un proceso ajeno a tu programa? No sé cual es la función para conseguir esto, y mira que le he dado vueltas...

SaludOS!
  #4 (permalink)  
Antiguo 16/10/2011, 14:42
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
Respuesta: Consulta: como obtengo el ID de un thread?

http://en.wikipedia.org/wiki/Procfs
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #5 (permalink)  
Antiguo 16/10/2011, 15:23
 
Fecha de Ingreso: marzo-2007
Mensajes: 302
Antigüedad: 17 años, 1 mes
Puntos: 2
Pregunta Respuesta: Consulta: como obtengo el ID de un thread?

Gracias por la rta , pero cuando intento usar gettid() me dice que no esta definida esa función.

Y en muchos ejemplos que veo ed creación de hilos, veo que como id toman el valor del i (del for que crea por ejemplo 10 threads. Por ejemplo como e el código siguiente). Esto es por algo ? Por que si entonces yo creo threads con dos for distintos, voy a tener threads con mismo id.

Código:
for (i=0; i<MAX_THREADS; i++) {
param[i].cadena = strdup("Hola, soy el thread");
param[i].id = i;
pthread_create(&tabla_thr[i], NULL, (void *)&funcion_thr,(void *)&param[i]);
}
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 10:52.