Ciao a tutti..
[MODIFICO PERCHE' ERA SCRITTO VERAMENTE MALE]
Sto studiando i thread, ma non riesco a capire una cosa (anche più di una ma..).
Passo subito al codice perchè non riesco a spiegarmi a parole.
allora qui creo i thread che andranno ad eseguire la stessa funzione e gli passo gli stessi parametri:
for(i=0;i<2;i++)
{
struttura1.tmp=i;
if(pthread_create(&t_thread[i],NULL,&routine,&struttura1))
{
..codice di errore
}
}
ok fin qui non dovrebbero esserci problemi.
ho bisogno che i due thread seguano due flussi di calcolo differenti, le due variabili x e y di struttura2 dovrenno così essere calcolate:
flusso del thread 1
struttura2.x++ e struttura2.y--;
flusso del thread 2:
struttura2.x-- e struttura2.y--;
avendo la funzione in comune, e quindi lo stesso codice, per distinguere i due flussi utilizzo la variabile tmp (che sarebbe quella dentro il for nel codice qui sopra) settata a 0 e passata come parametro al primo thread e poi settata a 1 e passata al secondo thread.
in questo modo dovrei avere un flusso con struttura2.tmp=0 e l'altro con struttura2.tmp=1.
codice della routine:
void* routine(void* args)
{
struct struttura2;
struct * arg;
arg=(struct *) args;
struttura2=*arg;
if(struttura2.tmp==0)
struttura2.id=100;
if(struttura2.tmp==1)
struttura2.id=101;
questo è il codice della funzione che non si comporta come mi sarei aspettato, ma esegue lo stesso codice cioè quello del secondo thread, che va a sovvrascrivere anche il primo.
In finale ho come risultato che, sia struttura2 del primo thread sia quella del secondo hanno l'id=101.
come posso distinguere il flusso dei calcoli usando la stessa funzione e lo stesso codice?
spero che si capisca meglio il mio problema ora
grazie a tutti