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.
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?codice:void *myThreadFunc(void *args) { int value; // calcolo della variabile 'value', poi la passo con pthread_exit pthread_exit((void *)value); }
Se ho detto bene allora non si dovrebbe fare cosi: ?
Poi nel main ad un certo punto avrò:codice:pthread_exit((void)&value);
Il secondo argomento della join è specificato come doppio puntatore a void, quindi devo anteporre & per ottenere 2 indirizzi.codice:void *thread_value_return; pthread_join(my_thread_id,&thread_value_return); printf("Il valore ritornato e': %d.",(int)thread_value_return);
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à![]()

Rispondi quotando