#include #include #include #include /* Mutex ve cond değişkenleri */ pthread_mutex_t condition_mutex = PTHREAD_MUTEX_INITIALIZER; pthread_cond_t condition_cond = PTHREAD_COND_INITIALIZER; pthread_mutex_t creating_theads_mutex = PTHREAD_MUTEX_INITIALIZER; int creating_theads = 0; int *sharedMatrisA; int *sharedMatrisB; int *sharedMatrisC; int m; int n; int k; void *matrisHesapla(int satirno) { printf("Thread #%d init.\n",satirno+1); fflush(stdout); /* Hala thread yaratma asamasindaysak bekle. */ if(creating_theads > 0) { printf("Thread #%d digerlerinin yaratilmasini beklemek uzere kitlenecek.\n",satirno+1); fflush(stdout); /* Yaratılınca bir bekle önce. */ pthread_mutex_lock( &condition_mutex ); printf("Thread #%d mutex locked.\n",satirno+1); fflush(stdout); pthread_cond_wait( &condition_cond, &condition_mutex ); printf("Thread #%d cond wait ended.\n",satirno+1); fflush(stdout); pthread_mutex_unlock( &condition_mutex ); printf("Thread #%d calismaya devam ediyor.\n",satirno+1); fflush(stdout); } else { pthread_mutex_unlock(&creating_theads_mutex); printf("Thread #%d beklemeye fırsat bulamadan tüm threadler yaratılmış.\n",satirno+1); fflush(stdout); } printf("Thread #%d hesaplamaya basladi.\n",satirno+1); int ic1,ic2; for(ic1=0; ic1