ragazzi ho scritto un paio di righe di codice per gestire dei threads. Il problema è che non riesco a capire sti benedetti puntatori a void.
Vi posto la porzione di codice che uso.
Ho una funzione che uso per generare un nuovo thread.
codice:
void *myThreadFunc(void *args) {
int value;
// calcolo della variabile 'value', poi la passo con pthread_exit
pthread_exit((void *)value);
}
Già la non capisco cosa succede. Cioè io ho un valore intero (int value) conservato in un dato spazio di memoria X, e con quel cast a void praticamente gli passo alla funzione pthread_exit l'indirizzo di memoria X però come se all'interno il dato fosse di tipo void?
Se ho detto bene allora non si dovrebbe fare cosi: ?
codice:
pthread_exit((void)&value);
Poi nel main ad un certo punto avrò:
codice:
void *thread_value_return;
pthread_join(my_thread_id,&thread_value_return);
printf("Il valore ritornato e': %d.",(int)thread_value_return);
Il secondo argomento della join è specificato come doppio puntatore a void, quindi devo anteporre & per ottenere 2 indirizzi.
Ora quello che non capisco è perchè devo fare (int)thread_value_return per accedere al valore intero, thread_value_return non rappresenta un puntatore?
Non dovrei fare
(int)*thread_value_return?
chissà se qualcuno mi aiuterà