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 :

Comment on fait des threads?


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 127
    Par défaut Comment on fait des threads?
    Salut!

    J'ai une fonction qui requiert un temps de traitement important! et j'aimerais la mettre dans un thread, pour evite que le programme soit bloque par ce traitement (interface graphique atteignable,etc,...).

    Donc ma question est comment faire un thread en C++??

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Il y a plusieurs bibliothèques qui le permettent.
    Par exemple Boost : http://miles.developpez.com/tutoriels/cpp/boost/thread/

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 127
    Par défaut
    Donc en gros, pour mon cas. C'est-a-dire: une fonction qui s'execute dans un thread on aura :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    //Dans Main
    #include <boost/thread/thread.hpp>
     
    void uneFonction(){;}
     
    int main(){
     
    boost::thread unThread(&uneFonction);
     
    }
    Donc quand j'appelle uneFonction(), le thread se lance??? comment on le tue? c'est automatique??

  4. #4
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Le thread s'arrête lorsque la fonction se termine, mais l'objet thread peut être détruit sans que le thread lui-même s'arrête.
    Pour synchroniser, il y a barrier.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 127
    Par défaut
    et sans la librairie boost, c'est quoi les possiblités???

  6. #6
    Membre émérite
    Inscrit en
    Janvier 2005
    Messages
    711
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 711
    Par défaut
    pourquoi, elle te plait pas la librairie Boost ???

    plus serieusement, elle est tres simple a utiliser et tres "prudente" dans la gestion des ressources, donc evite pas mal d'erreur. je m'en suis servi recemment et ca ronronne san probleme, alors que j n'y connaissais pas grand chose aux threads.. donc je recommande !!

    sinon, tu as des solutions mais tres specifiques a ton systeme, et plus "bas niveau", ce qui mltiplie les risques d'erreur..

  7. #7
    Membre éclairé Avatar de scaleo
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 327
    Par défaut
    Tu est sur que ta pas téléchargé visusla C# Expresse ???? parce qu'il me semble que VC++ EX, bah l'interface c'est du pur C++ aucune trace de .Net sauf si tu veut faire du C++/.Net , mais même dans ce ac tu peut utiliser OpenMP qui te permet de multithreader une application très simplement et qui est pris en charge par Visual Studio et est multiplateforme

  8. #8
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    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 395
    Par défaut
    La version express ne supporte pas OpenMP.
    Mais elle supporte complètement .Net.
    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.

Discussions similaires

  1. Comment stopper un thread qui fait des appels natifs ?
    Par khayyam90 dans le forum Général Dotnet
    Réponses: 7
    Dernier message: 04/01/2013, 10h30
  2. Comment BIEN gérer des threads?
    Par klakman dans le forum Threads & Processus
    Réponses: 9
    Dernier message: 24/12/2010, 18h34
  3. Réponses: 14
    Dernier message: 04/06/2007, 22h43
  4. Réponses: 4
    Dernier message: 28/03/2005, 19h42

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