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

C Discussion :

Graphe de dépendances avec des threads


Sujet :

C

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2023
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2023
    Messages : 8
    Par défaut Graphe de dépendances avec des threads
    Shalom, je cherche a executer un certains nombre de threads en respectant un certain graphe de dépendance.
    Par exemple:

    P1
    / \
    P2 P3

    En gros P2 et P3 doivent s'executer apres la fin de P1.
    Tout le défi est de ne pas utiliser les mécanismes de syncho (pas de mutex, ni de barrières).

    Ce qui m’intéresse c'est comment orchestrer les threads, je n'arrive pas trop à voir comment faire.
    Merci d'avance

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 054
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 054
    Billets dans le blog
    141
    Par défaut
    Bonjour,

    J'imagine qu'un tel exercice est un devoir d'école... Enfin bref, vous pourriez très bien avoir une liste de tâche qui serait traitée dans une boucle. Tant qu'il y a des tâches dans votre liste, vous devez traiter. Chaque tâche sera traité en créant un thread et en exécutant le calcul de la tâche. Une tâche peut très bien, ajouter de nouvelle tâche dans la liste, qui seront traitée à la prochaine itération de la boucle.
    Je pense en avoir assez dit
    Il y a aussi certainement d'autres façons de faire. Possible aussi qu'une difficulté d'éviter les problèmes lors d'ajout de nouvelles tâches
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2023
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2023
    Messages : 8
    Par défaut
    Alors oui c'est un devoir, j'avais déjà essayé plusieurs méthodes dont celle ci qui fonctionne mal.
    Sans barrières, mutexes ou voir des sémaphores les boucles sont pas très efficaces.
    Le mieux a faire est juste faire des grosses conditions sur les pthread_join après la terminaison du thread.
    Merci pour ton idée tout de même.

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 054
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 054
    Billets dans le blog
    141
    Par défaut
    Pourtant, je suis persuadé que cela peut se faire. Je pars du principe que l'on a pas le droit aux atomiques non plus
    Dans un modèle avec un seul thread travailleur (en plus d'un thread principal), on peut y arriver facilement : le thread principale effectue une boucle principale tant qu'il y a des tâches. Il spawn un thread au début, pour traiter les tâches et il join à la fin, pour attendre la fin des tâches. Le thread travaillant sur les tâches va remplir une autre liste (la liste des nouvelles tâches) au fur et à me sure de son travail.
    Et c'est à peu près tout, ça devrait passer.

    Il y a moyen de mettre ça en plusieurs threads de travail, avec un procédé de map reduce. En bref, plusieurs threads travaillent, chacun remplit ça propre liste de nouvelles tâches et une fois que tous les threads ont travaillé, on rassemble toutes les nouvelles tâches dans la liste de travail principale et on recommence .
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

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

Discussions similaires

  1. Problème avec des threads
    Par rajuto dans le forum Concurrence et multi-thread
    Réponses: 8
    Dernier message: 11/02/2007, 20h41
  2. Réponses: 4
    Dernier message: 21/12/2006, 21h03
  3. Faire un sleep non blockant avec des threads
    Par mobscene dans le forum Langage
    Réponses: 7
    Dernier message: 15/12/2006, 19h31
  4. [Threads] Actions continues avec des threads
    Par MiJack dans le forum Concurrence et multi-thread
    Réponses: 6
    Dernier message: 10/10/2005, 17h32

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