bonjour tout le monde,
Alors voilà. le but de mon programme est de simuler un monothread. Bien sur comme ce programme doit poller le réseau, il faut qu'une méthode s'active toutes les x secondes pour vérirfier si par hasard il n'y aurait pas de nouveau message.
Sur les machines de distribution, je sais qu'il existe une sorte d'interruption que je peux rediriger vers une méthode. Cette interruption est appelé régulièrement. Je n'ai donc pas besoin de m'occuper de créer ce mécanisme.
Sur mes machine de test, j'ai un linux tout à fait normal. J'utilise un pthread pour mon programme et un autre pour simuler l'interruption.
Mon problème est le suivant.
Si je veux simuler réellement ma machine de distribution il faut que je puisse m'assurer que lorsque mon thread interruption est réveiller, l'autre thread ne puisse pas revenir avant la fin du thread interruption.
En gros je veux que mon thread interruption empêche le thread de mon programme de reprendre la main tant qu'il n'a pas fini.
Bien sur j'ai tout de suite pensé au mutex. Mais comme mon programme peut être interrompu n'importe quand, il faudrait que je teste à chaque ligne si la variable mutex est libre. Ce qui est bien sur impensable.
Ayant étudier quelques temps les pth (portable thread coté utilisateur) je me suis dit qu'une fonction suspend devait surement exister du coté des pthread. Que nenni me dit t on sur google...
Je sais plus trop ou chercher...
Est ce qu'il existe un moyen de faire de l'exclusion non pas de partie de code, mais de thread ou de transformer un thread non préemptif en préemptif...
Si vous avez des idées, suggestions... Je les acceptes toutes... même et surtout si c'est pour me dire que c'est impossible... ca m'évitera de me casser la tête trop longtemps
Merci d'avance
Partager