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!