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 :

Perdu dans la foret des threads..


Sujet :

C++

  1. #1
    Membre régulier
    Inscrit en
    Septembre 2004
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 187
    Points : 97
    Points
    97
    Par défaut Perdu dans la foret des threads..
    Bonjour!
    Je code un programme avec gtkmm et j'arrive à un point où il va me falloir utiliser des threads. Il y a beaucoup de moyen d'utiliser les threads et j'aimerais savoir, avant de commencer à étudier, quelle bibliothèque serait la plus indiquée dans mon cas.
    Il s'agit d'un jeu d'échecs. Il y a trois classes (dans la partie concernée):
    CCom: gère certaines communications entre classes.
    CEchiqlogic: la gestion loqique du jeu et calcule des coups.
    CEchiquier: la partie graphique.
    CEchiqlogic et CEchiquier sont instantiés dans le constructeur de CCom.

    J'ai donc besoin de laisser tourner CEchiqlogic lorsque le programme est en attente d'un coup humain en provenance de CEchiquier.

    Alors...Glibmm, Pthread,boost...

  2. #2
    Membre régulier Avatar de raoulchatigre
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    99
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mars 2004
    Messages : 99
    Points : 87
    Points
    87
    Par défaut
    J'ai appris à manipuler les threads avec Java,
    En C++, j'ai déjà manipulé les pthreads, et j'ai trouvé la gestion assez laborieuse.

    Je serai tenté de te suggérer d'utiliser boost dont l'utilisation paraissait plus organisée, mais je suis loin d'être un expert.


    ...mes 2 cents

  3. #3
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    J'ai donc besoin de laisser tourner CEchiqlogic lorsque le programme est en attente d'un coup humain en provenance de CEchiquier.
    Pourquoi CEchiquier n'envoyerait-il pas simplement un évenement à CEchiqlogic lorsqu'il reçoit un coup humain ?
    Boost ftw

  4. #4
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Citation Envoyé par loufoque Voir le message
    Pourquoi CEchiquier n'envoyerait-il pas simplement un évenement à CEchiqlogic lorsqu'il reçoit un coup humain ?
    Et c'est très simple à mettre en place avec boost.signals.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 51
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par Alp Voir le message
    Et c'est très simple à mettre en place avec boost.signals.
    Je suis débutant (en C++ seulement ^^) et je ne veux donc pas dire de bêtises, mais il me semble également que Qt gère très bien cela avec son système de SLOT/SIGNAL !

  6. #6
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Citation Envoyé par kronos85 Voir le message
    Je suis débutant (en C++ seulement ^^) et je ne veux donc pas dire de bêtises, mais il me semble également que Qt gère très bien cela avec son système de SLOT/SIGNAL !
    Oui, mais il utilise GTKmm.
    Je sais très bien que Qt gère ça (responsable Qt, je connais un minimum la bête hein ) seulement il mélangerait 2 bibliothèques de GUI et l'une ne serait utile que pour les signaux/slots.

    Et puis boost gère ça de manière très correcte, sans avoir à utiliser un outil externe (moc avec Qt).

  7. #7
    Membre régulier
    Inscrit en
    Septembre 2004
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 187
    Points : 97
    Points
    97
    Par défaut
    Bonsoir!
    Désolé pour le retard....
    Pourquoi CEchiquier n'envoyerait-il pas simplement un évenement à CEchiqlogic lorsqu'il reçoit un coup humain ?
    En fait c'est déja le cas. Je crois que je n'ai pas été assez precis:
    Dans CEchiqlogic je veux avoir une fonction disons _calculateur qui:
    1 lance un procesus _calcul qui prévoit un demi-coup x
    2 le coup x est passé en argument à un nouveau processus _calcul etc...
    ainsi il y a autant de processus que de demi-coup. Tout les processus travaillent de concerve et si l'un d'eux trouve un meilleur coup il tue son processus enfant et recommence le calcul.

    Il me semble que si je me contente d'un signal, celui ci perturberait le calcul inopinément. Il me faut donc quelque chose qui contrôle la validité du coup sans perturber le calcul.

    J'ai commencé à regarder du côté de boost mais le patauge pas mal j'ai trouvé des exemples de code sur le site de dr.dobb's mais ils soulèvent plus de questions qu'ils n'en apportent. Auriez-vous quelques liens?

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Points : 1 053
    Points
    1 053
    Par défaut
    Ca dépends, ça dépends même beaucoup.

    Je m'explique: pour ma part, je n'ai pas de mal à comprendre la doc de boost::thread. Si ce n'est pas ton cas, c'est forcément que tu as une moins bonne connaissance que moi dans l'un des domaines nécessaires à sa compréhension.
    Est-ce parce que tu ne connais pas assez bien le C++ ? (si tu utilises gtkmm, je supposerais que ça va) Parce que tu ne connais pas bien les threads? Parce que tu ne parles pas très bien anglais? Parce que...
    Difficile de t'orienter vers d'autres documents sans savoir ce dont tu as besoin, désolé mais il n'y a quasiment aucune chance de trouver un tuto spécifique boost::thread, en français, hyper pédagogue, et qui explique à la fois les threads et les notions de C++ nécessaires à son utilisation -> faut savoir piocher à gauche à droite.

    Sinon, vu que tu utilises déjà gtkmm, l'utilisation de glibmm m'aurait semblé assez logique (je connais pas, mais je suppose que c'est pas trop mal conçu, et comme gtk est plutôt simple dans la plupart des cas...).

  9. #9
    Membre régulier
    Inscrit en
    Septembre 2004
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 187
    Points : 97
    Points
    97
    Par défaut
    Bonsoir,
    En fait, je trouve que quelques lignes de code valent mieux qu'un grand discourt. Je cherche donc des exemples d'utilisation de thread. Mais sinon je vais m'accrocher.

    P.S.:Y-a-t-il une raison majeur à choisir Glibmm plutôt que boost dans mon cas?

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Points : 1 053
    Points
    1 053
    Par défaut
    Une raison majeure? Non. C'est juste que si j'avais été à ta place, vu que cette biblio est disponible immédiatement, de par la présence de gtkmm, sans avoir à se casser le cul pour installer autre chose,... j'aurais pas été chercher bien loin

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

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut
    Boost évidemment.
    Pour le tuto, il y a celui de Matthieu : http://matthieu-brucher.developpez.c.../boost/thread/


Discussions similaires

  1. Perdu dans la priorité des fonctions
    Par Dev222 dans le forum Langage
    Réponses: 2
    Dernier message: 18/08/2013, 11h42
  2. Réponses: 2
    Dernier message: 17/04/2011, 02h37
  3. [Upload] Perdu dans la gestion des images
    Par thewaawshow dans le forum Langage
    Réponses: 9
    Dernier message: 19/09/2007, 14h32
  4. [C#][2.0] Sauvegarde d'un DataSet dans des threads différents
    Par Pilloutou dans le forum Framework .NET
    Réponses: 9
    Dernier message: 23/04/2007, 14h17
  5. les données des tables son perdu dans SqlPlus
    Par princessa dans le forum Sql*Plus
    Réponses: 3
    Dernier message: 09/03/2007, 19h27

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