diff --git a/G17_bykes/main.c b/G17_bykes/main.c index 264000f8f2d362334c992334e635536185caf6de..7660798aa858b2fe971bcc77691b9fcc22ccd2ad 100644 --- a/G17_bykes/main.c +++ b/G17_bykes/main.c @@ -11,8 +11,6 @@ #define CAMION_CAPACITE_TYP 2 #define SITE_CAPACITE_MIN 2 -//#define NUM_THREAD 5 - #define DEPOT 0 sem_t *sem_BorneFree; @@ -89,8 +87,8 @@ int main(int argc, char **argv){ mutex = malloc(sizeof(pthread_mutex_t)*nbSites); for(int x =0; x<nbSites; x++){ - sem_init(&sem_BikeFree[x], 0, 8); - sem_init(&sem_BorneFree[x], 0, 2); + sem_init(&sem_BikeFree[x], 0, nbBorne-2);//8); + sem_init(&sem_BorneFree[x], 0, nbBorne-(nbBorne-2));//2); pthread_mutex_init(&mutex[x], NULL); //mutex du camion } @@ -164,14 +162,14 @@ void *habitants(void *arg){ while(hab->nb_trajet < hab->max_trajets){ //waits for a bike in site i //if(hab->i_site==4){ + sem_getvalue(&sem_BorneFree[hab->i_site],&val); pthread_mutex_lock(&mutex[hab->i_site]); - printf("(GET) person %d starts from terminal %d (%d bykes, %d persons waiting, semVal : %d)\n", hab->num_thread, hab->i_site, sites[hab->i_site].nb_bikesParked, sites[hab->i_site].nb_P_waiting, val);//sites[hab->i_site].nb_P_waiting); + printf("(GET) person %d starts from terminal %d (%d bykes, %d persons waiting, semBorneFree_val : %d)\n", hab->num_thread, hab->i_site, sites[hab->i_site].nb_bikesParked, sites[hab->i_site].nb_P_waiting, val);//sites[hab->i_site].nb_P_waiting); pthread_mutex_unlock(&mutex[hab->i_site]); //} - sem_getvalue(&sem_BorneFree[hab->i_site],&val); if(sites[hab->i_site].nb_bikesParked<=0){// && hab->i_site == 4){ - printf("person %d is STUCK at terminal %d: rack empty with : %d bikes\n", hab->num_thread, hab->i_site, sites[hab->i_site].nb_bikesParked); + printf("person %d is STUCK at terminal %d: rack empty : %d bikes\n", hab->num_thread, hab->i_site, sites[hab->i_site].nb_bikesParked); } pthread_mutex_lock(&mutex[hab->i_site]); @@ -202,12 +200,13 @@ void *habitants(void *arg){ //waits for a parkinglot to be freed and deposit his bycycle //if(j==4){ + sem_getvalue(&sem_BikeFree[j],&val); pthread_mutex_lock(&mutex[j]); - printf("(PUT) person %d arrives at terminal %d (%d bykes, %d persons waiting, semVal : %d)\n", hab->num_thread, j, sites[j].nb_bikesParked, sites[j].nb_P_waiting, val);//sites[j].nb_P_waiting); + printf("(PUT) person %d arrives at terminal %d (%d bykes, %d persons waiting, semBikeFree_val : %d)\n", hab->num_thread, j, sites[j].nb_bikesParked, sites[j].nb_P_waiting, val);//sites[j].nb_P_waiting); pthread_mutex_unlock(&mutex[j]); //} - sem_getvalue(&sem_BikeFree[j],&val); + if(sites[j].nb_bikesParked>=hab->nbornes){//} && j == 4){ printf("person %d is STUCK at terminal %d: rack full : %d bikes\n", hab->num_thread, j, sites[j].nb_bikesParked); }