multi-threading en Visual C++ - Programmation
Marsh Posté le 21-05-2001 à 13:40:17
je pense que vouloir interompre tes thread autrement qu'en sortant de leur fonction principale n'est pas une idee geniale. La solution propre consiste a avoir un booleen qui peut etre modifie en dehors du thread et qui te permet de sortir de ton thread en douceur.
Marsh Posté le 21-05-2001 à 13:49:05
wpk > c'est meme la seule methode fiable...
sinon pour le handle il doit etre renvoye par la methode qui cree la thread. De plus il y a certainement une methode pour savoir dans quel thread tu es (pthread_self en POSIX)...
Dans wxWindows il y a une classe wxThread qui comporte un membre statique Self me semble-t-il...
cesi dit vouloir arreter un thread de l'exterieur est une mauvaise idee... Il faut qu'il s'arrete de lui-meme...
Marsh Posté le 21-05-2001 à 17:40:17
Pour la synchronisation des threads sous windows, tu peux utiliser les evenements: Avant de quitter le thread, tu lui fait mettre un evenement windows à l'etat signalé. Pour savoir si le thread est fini, tu fais alors un waitForSimpleObject sur l'evenement en question.
C'est souvent comme cela que c'est fait sous windows. En fait cette méthode te permet aussi d'attendre plusieurs threads en faisant un waitForMultipleObjects.
Avec les evenements, tu es quasi sûr de ne pas avoir de conflits d'acces sur une variable (ce qui peux tres vite arriver le jour ou ton prog tourne sur un bi-pro par ex).
a+
Marsh Posté le 21-05-2001 à 18:39:36
Merci pour tous ces conseils !
En ce qui concerne l'arrêt de mon thread par un évènement extérieur, c'est parce que c'est dans le cadre d'un client FTP.
En fait lorsque j'effectue un téléchargement par exemple, je veux que l'utilisateur puisse le stopper quand il le souhaite, et ce sans être obligé d'attendre la fin. Mon téléchargement est contenu dans un thread, d'où l'idée de le stopper à tout moment !
En revanche, en ce qui concerne le waitForSimpleObject, si possible j'aimerai avoir + d'infos SVP ?
merci
Marsh Posté le 21-05-2001 à 11:58:55
Bonjour,
Je reviens avec mon problème de client FTP...
D'abord merci à ceux qui m'ont aidé pour l'intégration de multi-threading dans mon application.
Maintenant que ça marche, j'ai un autre problème. J'utilise la fonction AfxBeginThread() pour créer mes threads.
L'ennui c'est que j'aurais besoin de connaitre le "handle" de mes threads créés pour ainsi pouvoir les stopper lorsque je le souhaite.
De plus, j'aimerai savoir s'il était possible de savoir quand un thread se termine ? et comment exécuter une action à la fin d'un thread ?
Merci d'avance