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 :

[Threadpool] Passage de callback différente à chaque appel


Sujet :

Threads & Processus C++

  1. #1
    Futur Membre du Club
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    4
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 4
    Par défaut [Threadpool] Passage de callback différente à chaque appel
    Bonjour à tous,

    je suis en train de faire une encapsulation C++ de la library C pthread, et je tente de faire une class un peu plus poussée pour pouvoir manipuler un threadpool de façon générique. Malheureusement, j'ai un petit soucis, certainement de compréhension.

    Est-il possible de modifier le pointeur sur fonction (la callback) passé au thread, et ce après sa création ? En effet, j'aimerais créer tout mes threads au début de mon programme et ensuite leurs assigner différentes tâches en fonction des commandes passées (non déductibles, cela peut-être toujours la même tâche comme des tâches complétement différentes). Seulement, je n'ai pas réussi à trouver une fonction capable de faire ça.

    J'ai essayé alors de trouver une solution, seulement je n'en trouve aucune vraiment optimisées : création des threads à la volée, ce n'est pas le but, assignation automatique d'une tâche à un thread, absolument pas optimisé si c'est toujours la même tâche qui demande à être executée, etc...

    Avez-vous une solution à ce problème, ou alors ai-je mal compris quelque chose ?

    Merci.

  2. #2
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Bonjour,
    Je ne suis pas spécialiste des threads, mais je pense que tu réinvente la roue.

    Je te suggère de regarder du coté de boost.thread ou de C++11, qui définissent tous deux une encapsulation de threads. (C++11 récupérant tout ou partie de boost)

  3. #3
    Futur Membre du Club
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    4
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 4
    Par défaut
    Citation Envoyé par leternel Voir le message
    Bonjour,
    Je ne suis pas spécialiste des threads, mais je pense que tu réinvente la roue.

    Je te suggère de regarder du coté de boost.thread ou de C++11, qui définissent tous deux une encapsulation de threads. (C++11 récupérant tout ou partie de boost)
    Oui je sais, c'est dans le cadre d'un exercice que je fais ça, donc évidemment, interdiction d'utiliser toute library ajoutant une surcouche des threads

  4. #4
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Bien sur, mais cela ne dois pas t'empecher d'aller voir comment c'est fait.
    La conception d'une bibliothèque de qualité peut servir de modèle…

  5. #5
    Futur Membre du Club
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    4
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 4
    Par défaut
    Mes excuses, j'ai cru que tu me disais d'utiliser ces bibliothèques. En effet je vais voir ça.

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 393
    Par défaut
    Citation Envoyé par Tarteaututo Voir le message
    Est-il possible de modifier le pointeur sur fonction (la callback) passé au thread, et ce après sa création ? En effet, j'aimerais créer tout mes threads au début de mon programme et ensuite leurs assigner différentes tâches en fonction des commandes passées (non déductibles, cela peut-être toujours la même tâche comme des tâches complétement différentes). Seulement, je n'ai pas réussi à trouver une fonction capable de faire ça.
    Ce n'est pas possible directement, mais tu peux créer ta propre callback, qui appelle elle-même d'autres callbacks de la manière que tu veux...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Futur Membre du Club
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    4
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 4
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Ce n'est pas possible directement, mais tu peux créer ta propre callback, qui appelle elle-même d'autres callbacks de la manière que tu veux...
    J'y avais déjà réfléchi, mais ton message m'a éclairé ! Je pense avoir trouver une solution, je l'explique ici pour ceux que ça intéresse :

    Les callbacks effectuant différentes tâches sont stockées dans un tableau de pointeur sur function, et appelé dans la supercallback avec un switch entre différentes valeurs d'un enum contenant toute les tâches à effectuer. Je lis une pile fifo de traitement à effectuer, et set un flag à la valeur de l'enum de la prochaine tâche à effectuer. Le switch regarde quel valeur à l'enum et lance la callback à utiliser. Ça devient tellement évident une fois qu'on a trouvé !

    Merci Médinoc, je mettrais le message en résolu une fois que ce sera fini et fonctionnel. Si ça intéresse quelqu'un, je posterais le code d'ici une semaine.

Discussions similaires

  1. Réponses: 4
    Dernier message: 09/05/2007, 23h39
  2. Affiché une texte différent chaque jour
    Par gastoncs dans le forum VB.NET
    Réponses: 3
    Dernier message: 07/02/2007, 22h28
  3. Perl.exe crash à chaque appel
    Par Fabien Celaia dans le forum Langage
    Réponses: 4
    Dernier message: 07/06/2006, 08h56
  4. Affichage différente à chaque chargement de page
    Par trihanhcie dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 22/05/2006, 14h48
  5. [TStringGrid] PopupMenu différent à chaque colonne.
    Par Caine dans le forum Composants VCL
    Réponses: 4
    Dernier message: 11/01/2006, 13h04

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