Voila j'ai eu besoin qu'a un certain moment un thread soit bloquant jusqu'a ce qu'un autre me dise de y aller.
J'ai donc utilisé les fonctions pthread_cond_wait et pthread_cond_signal.
Trouvant les man de ces fonctions un peu flous je suis allés me promener sur la toile et suis tombé sur un exemple de code sur le site yolinux, le code ressemblant un peu a cela :
dans le thread bloquant :
et dans le thread qui signal que l'autre peux executer ces actions :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 pthread_mutex_lock( &condition_mutex ); pthread_cond_wait( &condition_cond, &condition_mutex ); pthread_mutex_unlock( &condition_mutex );
J'ai mis a execution cet exemple ... et ca marche, c'est super.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 pthread_mutex_lock( &condition_mutex ); if(....) { pthread_cond_signal( &condition_cond ); } pthread_mutex_unlock( &condition_mutex );
Par contre je n'ai pas compris l'utilisation du mutex_lock avant et apres le wait et le signal ... quelqu'un pourrait-il m'expliquer ce mécanisme ?
Merci d'avance.
Partager