-
C++ Threads Kill
Bonjour,
Je me demandais s'il �tait possible de tuer un Glibmm::Thread ?
Bon logiquement, s'il est joinable, on fait un join et on l'attend, si on veut l'arr�ter on utiliser une variable externe au thread, ou bien des signaux...
Mais s'il mouline dans le vide, j'aimerai le nettoyer... La solution serait de r�p�rer son pid et de le tuer sauvagement ? Mais peut-on au moins r�cup�rer proprement son pid ?
Merci :)
-
Il semblerait que non. Du moins je n'ai rien trouv� de probant dans la documentation officielle.
Maintenant s'il p�dale dans la semoule comment le sais-tu? Si tu peux le savoir de l'ext�rieur du thread alors il doit �tre possible de le savoir de l'int�rieur, non?
Maintenant il est pr�cis�, toujours dans la documentation officielle, qu'il faut utiliser Glib::Thread::Exit(); pour arr�ter un thread. tu peux toujours essayer de l'ext�rieur.
-
Ben disons que je veux juste mettre une protection, bas�e sur un timeout par exemple... s'il est trop long et qu'il ne r�pond pas, pof, je le kill :)
Oui j'ai lu le Glib::Thread::Exit(), mais si j'ai bien compris (j'ai dit si ;)) c'est dans les m�thodes du Thread qu'il s'utilise, pas de l'ext�rieur... sinon si j'ai plusieurs threads, comment savoir lequel je kill :?
En truc tordu je me disais qu'il pourrait m'envoyer par signal son pid, mais c'est moche :roll: Dans ce cas-l�, je vais me rabattre sur des fork :cry:
-
Mais quand tu cr�es un thread tu r�cup�res bien son pointeur, non?
-
Oui, mais si je me rappelle bien, tu ne peux faire qu'un yield ou un join dessus, et il me semble que la doc dit qu'il est d�conseill� de d�truire l'objet r�cup�r�....
Mais maintenant que tu me fait r�pondre ce que je r�ponds, je me demande s'ils ne disent pas �a dans les cas d'arr�t propres, en pr�cisant qu'il vaut mieux attendre avec join, ou le laisser se terminer tout seul.... Je pourrais essayer
-
Oui il me semble que la doc. dit ca pour �viter des fuites m�moires. Si tu prends en compte cette donn�e tu peux peut-�tre construire ton thread de mani�re � ce qui se termine � n'importe quel moment sans provoquer de fuite.
-
Oui je vais envisager cette option...
A ce propos je me demande, si je fork, et que le p�re fait un kill sur le pid du fils, est-ce que les conditions d'arr�ts du processus (concernant fuites m�moires, etc) sont les m�me que si je d�truis le thread ?