Tutti i thread possono modificare i valori della matrice contemporaneamente, quindi i valori letti sono spuri.codice:void *mat() { int local,i; pthread_mutex_lock(&mut1); local=global; global++; pthread_mutex_unlock(&mut1); for(i=0;i<n;i++) *(mc+local*n+i)=(*(mb+local*n+i))+(*(ma+local*n+i)); pthread_mutex_lock(&mut2); cont++; if(cont==n) pthread_cond_signal(&cond); pthread_mutex_unlock(&mut2); pthread_exit(0); }
Il for devi eseguirlo prima di aprire il mutex.