Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/10/2011, 22:42
usuaria
 
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!