Ciao a tutti, considerando il seguente codice (compilato con g++ -lpthread thread_test.cpp
) come posso sapere qual è il numero di thread in cui sono dentro "thread_function"? E fammi sapere se hai altri suggerimenti.pthread in una classe
Grazie!
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 vedo che ora ... dovrei usare qualcosa come pthread_key_create per memorizzare qualche tipo di dati specifici del thread al suo interno per identificare se è il thread 1 o 2? Sto cercando di capire se pthread_key_create è davvero quello che voglio ... –
Puoi usare una variabile specifica del thread ma non penso sia necessario. Basta chiamare pthread_self() ogni volta che si desidera utilizzare il numero di thread corrente. – danadam
Come si usa un 'pthread_t' come numero? –