Forum Clubic

Programmation: Problème thread mutex

Bonjour,

j’ai un problème qui me semble pas si dur que ça mais dans ma tête c’est pas très clair.

Mon but est le suivant :

  • Lors de l’appuie sur une touche clavier : afficher “roule” puis afficher en boucle toutes les secondes “capteur”
  • A un instant t si j’appuie sur une autre touche ça doit m’afficher “stop”.

J’ai une très forte pensé pour tout ce qui est sémaphore, thread, mutex … mais leur utilisations me reste encore très flou.

Si quelqu’un peut m’apporter un peu d’aide se serait sympa.

Merci

Ju

La notion de thread pourra en effet t’être utile pour ton scénario.
En s’appuyant sur une variable partagée entre tes 2 tâches:

  • Une tâche principale qui lors de l’appui sur ta touche départ, créé 2 tâches et attend que celles-ci se terminent.
  • Une tâche qui vient lire toutes les secondes ta variable, si cette variable a la valeur “roule” (ou ce que tu veux) on affiche “roule”, sinon on affiche “stop” et la tâche se termine.
  • Une tâche qui lit la sortie clavier, si la touche “stop” est pressée, on modifie la valeur de la variable. Ensuite le tâche se termine.

Ensuite pour la partie mutex, si ton scénar n’évolue pas, il n’est pas indispensable puisque tu n’as qu’un seul rédacteur (une seule tâche susceptible de modifier la variable). Mais c’est toujours intéressant de le mettre en place :slight_smile:

Heu, en deux thread plutôt : une seule thread pour faire rouler, et l’autre (la thread principale) pour gérer le reste…

-> la première affiche “roule” au moment de démarrer la seconde thread
-> ta seconde thread aura juste à lire dans un boxon commun si on doit ou non s’arrêter (et afficher “capteur” une fois par seconde)
-> ou tu la stoppe tout bêtement (en Java, Thread.stop(), etc)

Surtout si c’est en IHM, c’est le meilleur pari.

Je pense d’ailleurs qu’arrêter/redémarrer la thread est la meilleure solution si tu ne veux pas trop t’embêter.