--- rpl/src/rpl.c 2017/08/03 08:30:49 1.198 +++ rpl/src/rpl.c 2017/08/03 15:13:04 1.199 @@ -6116,12 +6116,29 @@ rplinit(int argc, char *argv[], char *en INCR_GRANULARITE(attente.tv_nsec); } + attente.tv_sec = 0; + attente.tv_nsec = GRANULARITE_us * 1000; + + while(pthread_mutex_trylock(&((*s_etat_processus).mutex_pile_processus)) + == EBUSY) + { + nanosleep(&attente, NULL); + INCR_GRANULARITE(attente.tv_nsec); + } + + pthread_mutex_unlock(&((*s_etat_processus).mutex_pile_processus)); pthread_mutex_destroy(&((*s_etat_processus).mutex_pile_processus)); pthread_mutex_destroy(&((*s_etat_processus).mutex_allocation)); pthread_mutex_destroy(&((*s_etat_processus).mutex_interruptions)); pthread_mutex_destroy(&mutex_sections_critiques); pthread_mutex_destroy(&mutex_liste_variables_partagees); + free((*s_etat_processus).localisation); + + destruction_queue_signaux(s_etat_processus); + pthread_mutex_destroy(&((*s_etat_processus).mutex_signaux)); + liberation_contexte_cas(s_etat_processus); + # ifndef SEMAPHORES_NOMMES sem_post(&((*s_etat_processus).semaphore_fork)); sem_destroy(&((*s_etat_processus).semaphore_fork)); @@ -6131,12 +6148,6 @@ rplinit(int argc, char *argv[], char *en SEM_FORK); # endif - free((*s_etat_processus).localisation); - - destruction_queue_signaux(s_etat_processus); - pthread_mutex_destroy(&((*s_etat_processus).mutex_signaux)); - liberation_contexte_cas(s_etat_processus); - free((*s_etat_processus).chemin_fichiers_temporaires); if ((*s_etat_processus).requete_redemarrage == d_vrai)