View Single Post
Old 06-11-2007, 18:46   #20
Gnappy
Member
 
Iscritto dal: Feb 2001
Cittą: Nelle Langhe, dove non c'č tecnologia ma solo buon vino
Messaggi: 154
Quote:
Originariamente inviato da tomminno Guarda i messaggi
I vostri problemi risiedono nel fatto che non inizializzate le variabili, probabilmente perchč siete abituati al Java che lo fa da sč, mentre il C non lo fa.

Come pił volte ripetuto se non inizializzate le variabili il loro valore č random, e se per caso il vostro thread č allocato nelle stesse celle del precedente (cosa non certo rara, osservando in debug spesso si vedono le variabili riassumere il loro vecchio valore, magari anche della precedente istanza), allora per puro caso il valore assunto coincide con quello vecchio e quindi vedete come se la variabile fosse condivisa, in realtą č un vostro errore di programmazione decisamente elementare.
Guarda, si hai assolutamente ragione, ma ribadisco che l'esempio con la x č solo un BANALISSIMO esempio dove non l'abbiamo inizializzata per dimostrare l'incremento tra un thread e l'altro. Il fatto che su Unix Solaris 10 il gcc la voglia inizializzare di suo a 0 č un altro paio di mani che non mi interessa approfondire...
Nel nostro programma ogni variabile č inizializzata LOCALMENTE. Quindi siamo nell'esempio "Esempio con 3 threads che arrivano in maniera concorrenziale(conteporeaneamente)" del mio reply appena postato. Come vedi qui la x che sia inizializzata o meno conta poco, qua va a quel paese l'intera concorrenzialitą del programma. E il motivo č dell'inspiegabile situazione in cui queste maledette variabili decidono di meschiarsi tra i threads.

Entrambi(io e dnarod) abbiamo ben chiaro cosa succede quando questo codice viene eseguito e quella simulazione č uno dei possibili casi(poi dipende dallo scheduler), ma non abbiamo la minima idea di come risolvere per il semplice fatto che IN TEORIA QUELLE VARIABILI NON SI DOVREBBERO CONDIVIDERE.

Grazie ancora per il supporto..
__________________
spammo un casino!
Gnappy č offline   Rispondi citando il messaggio o parte di esso