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

Boost C++ Discussion :

Threads avec boost : débutant


Sujet :

Boost C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 22
    Par défaut Threads avec boost : débutant
    Bonjour à tous

    Je rencontre une grosse difficulté quand au fonctionnement des threads. Tout d'abord il faut que je vous dise que je ne suis pas un programmeur et que le c++ c'est pas ma tasse de thé (je sais je suis mal ).

    Voici mon problème :
    Jusqu'à aujourd'hui j'ai 2 applications distinctes (deux exe).

    Une programmée avec opengl qui me permet d'avoir une interface graphique mais surtout elle me permet la création d'un motif 2D que je peux déplacer à volonté avec 6 variables (3 en translation, 3 en rotation).

    Dans l'autre application, je calcule ces données en translation et en rotation.

    Mon but serait donc de tout regrouper dans un même prog en utilisant les threads, ce qui donnerait un truc du genre :
    thread 1 : appli opengl
    thread 2 : appli calcul

    J'ai compris grâce au tuto du site (merci à son auteur) comment créer deux threads. Cependant je n'arrive pas à déterminer comment communiquer entre ces deux threads.
    Voilà en gros ce que je sais faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    int main(const int argc, char** argv)
    { 
        boost::thread thrd(&calculation);
        boost::thread thrd2(&appli_opengl);
        thrd.join()
        thrd2.join();
     
        return 0;
    }
    C'est à dire pas grand chose
    Je sais qu'il faudra gérer ça avec des mutex pour que les deux threads n'accédent pas aux variables en même temps. Mais après... en fait si quelqu'un avait la bonté de me montrer un exemple simple (archi simple) de deux threads qui communiquent entre eux avec boost, je lui en serais vraiment reconnaissant.
    Tout conseil(ou liens) ou encouragement est également bon à prendre donc n'hésitez pas !!

    Mercciii.

  2. #2
    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
    Par défaut
    Quel type de communication ?
    Tu veux signaler un événement ? Envoyer un message ? Modifier de l'état partagé ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 22
    Par défaut
    Je veux juste envoyer des données :
    - appli calcul envoi matrice translation et rotation
    - appli opengl reçoit cette matrice

    Je n'arrive pas à trouver comment déclarer des threads avec des paramètres...
    Et autre question : devrais-je utiliser des mutex pour éviter que les deux threads accèdent aux mêmes variables en même temps?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 22
    Par défaut
    Double post mais c'est pour la bonne cause, donc pour avoir des threads avec des paramètres, il suffit d'utiliser bind de cette manière, nan?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    boost::thread thrd(boost::bind(&calculation,&T_dep));
    avec T_dep comme paramètre.

    En tout cas, ça a l'air de marcher. Il me reste plus qu'à utiliser des mutex pour contrôler l'accès aux données, des indices là dessus??

  5. #5
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    D'un côté tu parles d'exécutables indépendants, et de l'autre de fonction avec des paramètres (paramètres que tu ne nous indique pas). Ce n'est pas du tout la même chose. Peut-être pourrais-tu mieux expliquer ta situation ?
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Par défaut
    pour passer des paramètres à un thread tu peux utiliser un functor

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

Discussions similaires

  1. Communication inter threads avec boost
    Par MikeLarson dans le forum C++
    Réponses: 17
    Dernier message: 03/02/2012, 15h28
  2. Réponses: 9
    Dernier message: 24/08/2007, 12h37
  3. Problème de lib avec Boost::thread
    Par TocTocKiéLà? dans le forum Boost
    Réponses: 5
    Dernier message: 14/08/2007, 01h05
  4. Boost thread avec fonction membre non statique.
    Par Klaim dans le forum Boost
    Réponses: 2
    Dernier message: 11/08/2007, 02h58
  5. Questions de perfomance avec boost::thread
    Par Rafy dans le forum Boost
    Réponses: 36
    Dernier message: 05/10/2006, 15h21

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