--- rpl/src/instructions_s10.c 2010/05/25 18:09:44 1.12 +++ rpl/src/instructions_s10.c 2010/06/19 15:54:51 1.15 @@ -459,25 +459,23 @@ instruction_spawn(struct_processus *s_et (*s_argument_thread).set = set; (*s_argument_thread).oldset = oldset; - -# ifdef DEBUG_MEMOIRE - debug_memoire_verrouillage(); -# endif + (*s_argument_thread).thread_actif = d_faux; if (pthread_create(&thread_id, &attributs, lancement_thread, s_argument_thread) != 0) { -# ifdef DEBUG_MEMOIRE - debug_memoire_deverrouillage(); -# endif - (*s_etat_processus).erreur_systeme = d_es_processus; return; } -# ifdef DEBUG_MEMOIRE - debug_memoire_deverrouillage(); -# endif + attente.tv_sec = 0; + attente.tv_nsec = GRANULARITE_us * 1000; + + while((*s_argument_thread).thread_actif == d_faux) + { + nanosleep(&attente, NULL); + INCR_GRANULARITE(attente.tv_nsec); + } if (pthread_attr_destroy(&attributs) != 0) { @@ -660,25 +658,13 @@ instruction_spawn(struct_processus *s_et // Lancement du thread de surveillance -# ifdef DEBUG_MEMOIRE - debug_memoire_verrouillage(); -# endif - if (pthread_create(&thread_surveillance, &attributs, surveillance_processus, s_argument_thread) != 0) { -# ifdef DEBUG_MEMOIRE - debug_memoire_deverrouillage(); -# endif - (*s_etat_processus).erreur_systeme = d_es_processus; return; } -# ifdef DEBUG_MEMOIRE - debug_memoire_deverrouillage(); -# endif - if (pthread_attr_destroy(&attributs) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus;