IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Threads & Processus C++ Discussion :

[MT] Existence d'un thread


Sujet :

Threads & Processus C++

Vue hybride

MarronSuisse [MT] Existence d'un thread 18/09/2007, 04h06
Laurent Gomila Tu utilises quelle... 18/09/2007, 08h29
poukill Pourquoi "tuer" un thread?... 18/09/2007, 08h35
MarronSuisse J'utilise la classe... 19/09/2007, 10h30
Laurent Gomila Tuer un thread n'est jamais... 19/09/2007, 10h39
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2006
    Messages : 71
    Par défaut [MT] Existence d'un thread
    Bonjour,

    Je me demandais s'il existait une méthode ou bien une astuce pour tester l'existence d'un thread, cad si le processus est en train de tourner ?

    J'ai parcouru la msdn et google, rien trouvé qui puisse me servir.

    Mon programme fait appel à des threads, seulement j'aimerai qu'il en lance un seul à la fois, donc lorsque le deuxieme se lance, il faudrait tuer le premier avant. Ce que je fais actuellement.
    Seulement lorsqu'il n'y a pas de processus en cours et que je tente de killer, le programme plante, normal.

    Une suggestion pour pallier au probleme ?
    Merci

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Tu utilises quelle bibliothèque de threads ?

  3. #3
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Pourquoi "tuer" un thread? C'est un peu violent non?
    Il vaut mieux utiliser les mutex si tu veux synchroniser des thread.

    Au passage, j'avais déjà posé ce genre de question, et apparemment il n'y a que les thread windows que tu peux "killer". Pas de boost, ni de pthread.
    D'où la question de Laurent je pense.

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2006
    Messages : 71
    Par défaut
    J'utilise la classe CWinThread et la fonction AfxBeginThread, standard MFC me semble-t-il.
    Il s'agirait donc bien des thread windows, ca me laisse un petit espoir.

    @poukill : je n'ai aucun besoin de synchroniser mes threads.
    Voici le contexte : j'ai une fenetre qui contient une liste contenant des noms d'images. Lorsque l'utilisateur clique sur une entrée, un thread se lance et affiche un thumbnail de l'image. J'utilise des threads sinon l'appli se bloque pendant le calcul du thumbnail, ce qui n'est pas "user friendly", pour citer mon patron.
    Ainsi, lorsque l'utilisateur clique sur une entrée, puis sur une autre, il faut que le thumb correspondant a la deuxieme entrée s'affiche, plus besoin de calculer le thumb correspondant a la premiere entrée. On peut donc tuer ce thread. C'est meme nécessaire, car si un thread est plus rapide qu'un autre (taille des images), le thumb correspondant a l'image cliquée en premier peut apparaitre en deuxieme. Bref, cela genere des incohérences.

    Je suis preneur pour toute idée, meme s'il faut changer de direction.

  5. #5
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Tuer un thread n'est jamais conseillé, d'ailleurs ce n'est pas pour rien que les APIs un peu haut niveau n'intègrent pas cette fonction.

    La fonction qui calcule/affiche ton image doit être sous forme de boucle, non ? Si c'est le cas alors il vaut mieux tester une condition à chaque tour de boucle (un simple booléen peut faire l'affaire), et lorsque le thread principal rend cette condition fausse, le thread secondaire sait qu'il doit s'arrêter de boucler. C'est propre et ça permet de libérer correctement les ressources du thread.

  6. #6
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Comme te l'a dit Laurent, il convient de demander a un thread de s'arreter de lui meme, et non de l'assassiner. Ca peut te causer des problemes, liés a des ressources allouées non libérées (parce que tué).
    Au lieu de le tuer pour en créer un nouveau, pourquoi ne pas envisager de le réutiliser, de le réinitialiser en quelque sorte ? "Arrete ton calcul en cours et recommence avec ce thumbnail".

Discussions similaires

  1. Réponses: 5
    Dernier message: 05/08/2010, 16h35
  2. tester l'existence d'une thread
    Par jhanos dans le forum POSIX
    Réponses: 5
    Dernier message: 16/09/2009, 12h49
  3. Teste si un thread existe déjà.
    Par ouranos21 dans le forum Concurrence et multi-thread
    Réponses: 6
    Dernier message: 15/01/2008, 14h41
  4. Réponses: 4
    Dernier message: 12/11/2005, 14h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo