Hola a todos, teniendo en cuenta el siguiente código (compilado con g++ -lpthread thread_test.cpp
) ¿cómo puedo saber en qué número de subproceso estoy dentro de "thread_function"? Y avíseme si tiene alguna otra sugerencia.pthread en una clase
Gracias!
thread_test.cpp:
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <unistd.h>
class A {
public:
A();
void run();
private:
static void* thread_function(void *ptr);
pthread_t m_thread1, m_thread2;
static int m_global;
};
int A::m_global = 0;
A::A() {
int ret1 = pthread_create(&m_thread1, NULL, &A::thread_function, this);
int ret2 = pthread_create(&m_thread2, NULL, &A::thread_function, this);
}
void A::run() {
while (1) {
printf("parent incrementing...\n");
m_global++;
sleep(2);
}
}
void* A::thread_function(void *ptr) {
printf("I'm thread ?\n");
while (1) {
printf("thread global: %d\n", m_global);
sleep(1);
}
}
int main() {
A a;
a.run();
return 0;
}
ok veo que ahora ... ¿debería usar algo como pthread_key_create para almacenar algún tipo de datos específicos de hilos para identificar si es el hilo 1 o 2? Estoy tratando de averiguar si pthread_key_create es realmente lo que quiero ... –
Puede usar una variable específica de subproceso, pero no creo que sea necesario. Simplemente llame a pthread_self() siempre que quiera usar el número de hilo actual. – danadam
¿Cómo se usa 'pthread_t' como número? –