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

Multithreading Discussion :

Attente de la fin d'un parmis plusieurs threads


Sujet :

Multithreading

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 214
    Par défaut Attente de la fin d'un parmis plusieurs threads
    Slt, j'ai un thread qui va en créer plusieurs et leur donner chacun une tache. Je voudrais que ce thread sur veille ensuite tous les threads et dès qu'un a terminé, il lui envoie du travail. J'ai bien sûr pensé à une boucle qui vérifie tout le temps qu'un thread soit fini si oui, on lui envoie du boulot mais c'est assez barbare ! Existe-t-il donc une fonction à peu prés équivalente à un select pour les sockets ou fifo qui permet de bloquer jusqu'à ce qu'un ait fini ? J'ai sinon pensé à faire réceptionner les signaux de fin mais après comment faire attendre le thread sans faire d'attente active ? Une sorte de wait signal quoi !

    Merci d'avance !

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Salut.
    Que veut tu dire par une thread qui ne fait rien?

    peut être avec ceci
    http://qt.developpez.com/doc/latest/....html#finished

    ou en utilisant un pool de thread et des runnable :
    http://qt.developpez.com/doc/latest/...l.html#details
    http://qt.developpez.com/doc/latest/qrunnable.html

    Ou peut être les concurrent
    http://qt.developpez.com/doc/latest/qtconcurrent.html

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 214
    Par défaut
    Ben en fait, je voudrais "surveiller" les threads et dès qu'un a fini que j'en soit informé. Comme la fonction select. Effectivement, comme vous m'avez proposé, je peux agir dès que je reçoit un signal d'un thread qui se termine. Mais je fais quoi comme attente ? Obligatoirement une attente active ? Ou existe-t-il un moyen "d'attendre" un signal de manière passive (en évitant une sorte de boucle infinie ! ) ?

    Merci d'avance !

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par barbug Voir le message
    Effectivement, comme vous m'avez proposé, je peux agir dès que je reçoit un signal d'un thread qui se termine. Mais je fais quoi comme attente ?
    ben rien, tu as l'eventloop qui tourne, mais ne fait rien, et dés que le signal est emit, un slot est exécuté.

    Si tes thread effectue des traitements très rapide, je pense qu'une solution avec un pool de thread et des runnable sera plus efficace. Ou avec les QtConcurrent. Histoire de ne pas recréé un thread à chaque fois.


    [edit]
    tu peut tutoyer

  5. #5
    Membre Expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Par défaut
    Salut,

    Pourquoi ne pas avoir une approche légèrement différente ?

    * Le maitre (M1) possède n travailleurs
    * chaque travailleur possède sa propre file de tâche(s)
    * dès que le travailleur a fini sa file de tâche, il se met en sommeil (comme l'a dit mongaulois, ça passerait par une boucle d'événement locale au thread)
    * Dès que le maitre reçoit une tache d'un quelconque autre maitre (M2 pour faire la distinction), il trouve le thread qui a le moins de tâches en file et lui assigne
    * Si le thread n'avait pas de tâches en file ni de tâche en cours, le maitre réveille le thread par un signal (toujours comme l'a dit mongaulois )

    Le "problème" de Qt Concurrent est qu'il ne supporte pas l'ajout de tâches contrairement à TBB. Tu donnes une série de tâche et il les exécute; c'est tout.

  6. #6
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par IrmatDen Voir le message
    Le "problème" de Qt Concurrent est qu'il ne supporte pas l'ajout de tâches contrairement à TBB. Tu donnes une série de tâche et il les exécute; c'est tout.
    Quand j'avais regardé de plus prés, il me semblais que tout les appel concurrent on le même pool de thread et donc chaque appel était en attente jusqu'à ce qu'une thread est libre.
    Donc pour moi, cela reviendrais au même.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Attente d'un thread parmis plusieurs
    Par sone47 dans le forum Threads & Processus
    Réponses: 2
    Dernier message: 06/03/2013, 10h47
  2. [VBA-E]Fermer classeur EXCEL parmi plusieurs
    Par flyfrog dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 30/04/2006, 11h54
  3. Sélection d'enregistrement parmis plusieurs identiques
    Par monnoliv dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 24/09/2005, 15h32
  4. Réponses: 2
    Dernier message: 24/08/2005, 10h59
  5. sélection d'un max parmi plusieurs champs
    Par invitésuprise dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/08/2005, 13h49

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