|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Feb 2015
Messaggi: 10
|
[C] cast void**
Ciao ragazzi...
non riesco a capire il funzionamento del void** implementato qui sotto, se riusciste a darmi dei chiarimenti ve ne sarei molto grato. Codice:
pthread_join(tid[r * N + c], (void **)&results[r * N + c]); |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
La pthread_join() permette di fermare l'esecuzione del thread che la invoca fino a quando il thread specificato dal primo parametro termina la sua esecuzione.
Una volta che un thread termina l'esecuzione ha la possibilita' di ritornare un valore, e questo viene reso disponibile nel secondo parametro. Questo se tutto va bene (i.e. pthread_join() ritorna 0); altrimenti verra' ritornato un codice di errore. I parametri sono abbastanza semplici: - il primo e' il numero che identifica il thread del quale attendere la terminazione. Nel tuo caso e' tid[r * N + c]. Apparentemente tid e' un vettore di ID. L'espressione fra quadre e' la tipica espressione per "linearizzare" una matrice, vale a dire: logicamente i thread sono posti in una matrice (tipicamente N x N, o cmq con N colonne) ma risulta piu' facile memorizzarli in un vettore, una riga dopo l'altra ed accederci con quell'espressione; - Stesso gioco sul secondo parametro: il vettore results deve memorizzare i risultati dell'elaborazione del corrispondente thread. L'espressione (void **) e' solo un casting, vale a dire il programmatore segnala al compilatore che e' consapevole che il tipo del parametro richiesto per la pthread_join() e' proprio (void **).
__________________
In God we trust; all others bring data |
![]() |
![]() |
![]() |
#3 |
Junior Member
Iscritto dal: Feb 2015
Messaggi: 10
|
Forse non sono stato chiaro io 😔 il funzionamento pthread_join() mi era già chiaro ma io volevo capire void** che cosa fa cioè void* so cosa fa ma void** non riesco proprio a capire che cast faccia..
Ps. Grazie comunque della risposta 👊 |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
E' un cast, esattamente come (void *). Siccome il tipo richiesto e' (void **) viene fatto il cast a quel tipo
__________________
In God we trust; all others bring data |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:00.