version 1.39, 2010/09/02 07:51:48
|
version 1.40, 2010/09/11 16:46:19
|
Line 183 insertion_thread_surveillance(struct_pro
|
Line 183 insertion_thread_surveillance(struct_pro
|
} |
} |
} |
} |
|
|
pthread_mutex_lock(&((*s_argument_thread).mutex)); |
pthread_mutex_lock(&((*s_argument_thread).mutex_nombre_references)); |
(*s_argument_thread).nombre_references++; |
(*s_argument_thread).nombre_references++; |
pthread_mutex_unlock(&((*s_argument_thread).mutex)); |
pthread_mutex_unlock(&((*s_argument_thread).mutex_nombre_references)); |
|
|
(*l_nouvel_objet).suivant = liste_threads_surveillance; |
(*l_nouvel_objet).suivant = liste_threads_surveillance; |
(*l_nouvel_objet).donnee = (void *) s_argument_thread; |
(*l_nouvel_objet).donnee = (void *) s_argument_thread; |
Line 378 retrait_thread_surveillance(struct_proce
|
Line 378 retrait_thread_surveillance(struct_proce
|
(*l_element_precedent).suivant = (*l_element_courant).suivant; |
(*l_element_precedent).suivant = (*l_element_courant).suivant; |
} |
} |
|
|
if (pthread_mutex_lock(&((*s_argument_thread).mutex)) != 0) |
if (pthread_mutex_lock(&((*s_argument_thread).mutex_nombre_references)) |
|
!= 0) |
{ |
{ |
# ifndef SEMAPHORES_NOMMES |
# ifndef SEMAPHORES_NOMMES |
sem_post(&semaphore_liste_threads); |
sem_post(&semaphore_liste_threads); |
Line 400 retrait_thread_surveillance(struct_proce
|
Line 401 retrait_thread_surveillance(struct_proce
|
|
|
if ((*s_argument_thread).nombre_references == 0) |
if ((*s_argument_thread).nombre_references == 0) |
{ |
{ |
if (pthread_mutex_unlock(&((*s_argument_thread).mutex)) != 0) |
if (pthread_mutex_unlock(&((*s_argument_thread) |
|
.mutex_nombre_references)) != 0) |
{ |
{ |
# ifndef SEMAPHORES_NOMMES |
# ifndef SEMAPHORES_NOMMES |
sem_post(&semaphore_liste_threads); |
sem_post(&semaphore_liste_threads); |
Line 415 retrait_thread_surveillance(struct_proce
|
Line 417 retrait_thread_surveillance(struct_proce
|
} |
} |
|
|
pthread_mutex_destroy(&((*s_argument_thread).mutex)); |
pthread_mutex_destroy(&((*s_argument_thread).mutex)); |
|
pthread_mutex_destroy(&((*s_argument_thread).mutex_nombre_references)); |
free(s_argument_thread); |
free(s_argument_thread); |
} |
} |
else |
else |
{ |
{ |
if (pthread_mutex_unlock(&((*s_argument_thread).mutex)) != 0) |
if (pthread_mutex_unlock(&((*s_argument_thread) |
|
.mutex_nombre_references)) != 0) |
{ |
{ |
# ifndef SEMAPHORES_NOMMES |
# ifndef SEMAPHORES_NOMMES |
sem_post(&semaphore_liste_threads); |
sem_post(&semaphore_liste_threads); |
Line 676 liberation_threads(struct_processus *s_e
|
Line 680 liberation_threads(struct_processus *s_e
|
s_argument_thread = (struct_descripteur_thread *) |
s_argument_thread = (struct_descripteur_thread *) |
(*((struct_liste_chainee *) element_courant)).donnee; |
(*((struct_liste_chainee *) element_courant)).donnee; |
|
|
if (pthread_mutex_lock(&((*s_argument_thread).mutex)) != 0) |
if (pthread_mutex_lock(&((*s_argument_thread) |
|
.mutex_nombre_references)) != 0) |
{ |
{ |
(*s_etat_processus).erreur_systeme = d_es_processus; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
sem_post(&semaphore_liste_threads); |
sem_post(&semaphore_liste_threads); |
Line 700 liberation_threads(struct_processus *s_e
|
Line 705 liberation_threads(struct_processus *s_e
|
close((*s_argument_thread) |
close((*s_argument_thread) |
.pipe_nombre_interruptions_attente[0]); |
.pipe_nombre_interruptions_attente[0]); |
|
|
if (pthread_mutex_unlock(&((*s_argument_thread).mutex)) |
if (pthread_mutex_unlock(&((*s_argument_thread) |
!= 0) |
.mutex_nombre_references)) != 0) |
{ |
{ |
(*s_etat_processus).erreur_systeme = d_es_processus; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
sem_post(&semaphore_liste_threads); |
sem_post(&semaphore_liste_threads); |
Line 709 liberation_threads(struct_processus *s_e
|
Line 714 liberation_threads(struct_processus *s_e
|
} |
} |
|
|
pthread_mutex_destroy(&((*s_argument_thread).mutex)); |
pthread_mutex_destroy(&((*s_argument_thread).mutex)); |
|
pthread_mutex_destroy(&((*s_argument_thread) |
|
.mutex_nombre_references)); |
|
|
if ((*s_argument_thread).processus_detache == d_faux) |
if ((*s_argument_thread).processus_detache == d_faux) |
{ |
{ |
Line 723 liberation_threads(struct_processus *s_e
|
Line 730 liberation_threads(struct_processus *s_e
|
} |
} |
else |
else |
{ |
{ |
if (pthread_mutex_unlock(&((*s_argument_thread).mutex)) |
if (pthread_mutex_unlock(&((*s_argument_thread) |
!= 0) |
.mutex_nombre_references)) != 0) |
{ |
{ |
(*s_etat_processus).erreur_systeme = d_es_processus; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
sem_post(&semaphore_liste_threads); |
sem_post(&semaphore_liste_threads); |
Line 1350 liberation_threads(struct_processus *s_e
|
Line 1357 liberation_threads(struct_processus *s_e
|
s_argument_thread = (struct_descripteur_thread *) |
s_argument_thread = (struct_descripteur_thread *) |
(*l_element_courant).donnee; |
(*l_element_courant).donnee; |
|
|
if (pthread_mutex_lock(&((*s_argument_thread).mutex)) != 0) |
if (pthread_mutex_lock(&((*s_argument_thread).mutex_nombre_references)) |
|
!= 0) |
{ |
{ |
(*s_etat_processus).erreur_systeme = d_es_processus; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
sem_post(&semaphore_liste_threads); |
sem_post(&semaphore_liste_threads); |
Line 1373 liberation_threads(struct_processus *s_e
|
Line 1381 liberation_threads(struct_processus *s_e
|
close((*s_argument_thread).pipe_interruptions[0]); |
close((*s_argument_thread).pipe_interruptions[0]); |
close((*s_argument_thread).pipe_nombre_interruptions_attente[0]); |
close((*s_argument_thread).pipe_nombre_interruptions_attente[0]); |
|
|
if (pthread_mutex_unlock(&((*s_argument_thread).mutex)) != 0) |
if (pthread_mutex_unlock(&((*s_argument_thread) |
|
.mutex_nombre_references)) != 0) |
{ |
{ |
(*s_etat_processus).erreur_systeme = d_es_processus; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
sem_post(&semaphore_liste_threads); |
sem_post(&semaphore_liste_threads); |
Line 1381 liberation_threads(struct_processus *s_e
|
Line 1390 liberation_threads(struct_processus *s_e
|
} |
} |
|
|
pthread_mutex_destroy(&((*s_argument_thread).mutex)); |
pthread_mutex_destroy(&((*s_argument_thread).mutex)); |
|
pthread_mutex_destroy(&((*s_argument_thread) |
|
.mutex_nombre_references)); |
|
|
if ((*s_argument_thread).processus_detache == d_faux) |
if ((*s_argument_thread).processus_detache == d_faux) |
{ |
{ |
Line 1394 liberation_threads(struct_processus *s_e
|
Line 1405 liberation_threads(struct_processus *s_e
|
} |
} |
else |
else |
{ |
{ |
if (pthread_mutex_unlock(&((*s_argument_thread).mutex)) != 0) |
if (pthread_mutex_unlock(&((*s_argument_thread) |
|
.mutex_nombre_references)) != 0) |
{ |
{ |
(*s_etat_processus).erreur_systeme = d_es_processus; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
sem_post(&semaphore_liste_threads); |
sem_post(&semaphore_liste_threads); |