Quote:
Originariamente inviato da zanardi84
In realtà ho scritto molto male adottando un'errata equivalenza thread = funzione ad esso associato come se questo avesse le proprietà della funzione.
Io volevo creare l'array all'interno della funzione in modo che fosse ritornato al main per cercare di ridurre al minimo l'utilizzo delle variabili globali.
|
Non e' tanto sbagliato. Nel senso che al thread e' associata una funzione che funge da entry point. Da li' in poi il flusso di esecuzione aggiunge un altro ramo parallelo/concorrente a quello principale.
E il main di fatto viene avviato in un thread di default creato dal runtime del linguaggio.
Il bello dei thread e' che, avendo accesso al medesimo spazio d'indirizzamento, ogni scambio di dati e' del tutto simile a quello che avviene tra normali funzioni in uno scenario single threaded.
Ovviamente bisogna stare attenti a quando si accede a variabili globali e/o comuni a piu' thread, altrimenti le race condition ti fanno a fette.
Pero' i thread rendono naturale il ritorno di valori ( anche puntatori ) dalle funzioni al main, senza nessuna particolare complicazione.