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

Multithreading Discussion :

Débuter avec les threads


Sujet :

Multithreading

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 248
    Points : 119
    Points
    119
    Par défaut Débuter avec les threads
    Salut,

    Je ne connais pas grand chose sur les threads à part un tutoriel simple que j'ai lu sur les threads POSIX. Je désire utiliser les threads dans mon application Qt et j'aimerai avoir vos conseils pour bien commencer. La documentation de QT thread dit qu'il faut avoir une expérience préalable avec les threads.

    Merci

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par Nehmé Voir le message
    Salut,

    Je ne connais pas grand chose sur les threads à part un tutoriel simple que j'ai lu sur les threads POSIX. Je désire utiliser les threads dans mon application Qt et j'aimerai avoir vos conseils pour bien commencer. La documentation de QT thread dit qu'il faut avoir une expérience préalable avec les threads.

    Merci
    Salut.
    regarder dans la FAQ http://qt.developpez.com/faq/?page=Thread
    il y as quelques bases très importante.
    ceci aussi :http://www.qtsoftware.com/forms/whit...-threading-eng

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 248
    Points : 119
    Points
    119
    Par défaut
    Merci Yan.
    Je suis en train de lire tout ca.
    Je veux utiliser les threads tout simplement pour éviter que mon interface graphique gèle. Je sais que les threads permettent de faire beaucoup plus que ca, mais bon je crois que c'est un bon début...

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par Nehmé Voir le message
    Merci Yan.
    Je suis en train de lire tout ca.
    Je veux utiliser les threads tout simplement pour éviter que mon interface graphique gèle. Je sais que les threads permettent de faire beaucoup plus que ca, mais bon je crois que c'est un bon début...
    Ok sai-tu pourquoi elle gèle?

    Sinon, j'ai commencé un tuto. Il manque des choses et y as plein de fautes d'orthographes. Mais c'est un bon début. Si cela peut t'aider
    http://ftp-developpez.com/yan-verdav...ng_avec_Qt.pdf

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 248
    Points : 119
    Points
    119
    Par défaut
    Merci pour le tuto !

    Citation Envoyé par yan Voir le message
    Ok sai-tu pourquoi elle gèle?
    Oui ben c'est parce que mon process ne contient qu'un seul thread et donc le processeur ne fait qu'une chose à la fois et tant que mon algorithme et en excecution le processeur n'est pas disponible pour mettre à jour mon interface.

    J'ai réussi à regler ce problème en créant un thread et appelant mon algorithme(qui est dans mon cas l'algorithme génétique) à l'intérieur de ce thread. J'ai aussi intégrer un chronomètre et un progress bar dans mon interface qui seront mis à jour en tout temps grâce au multi thread.

    Mon progress bar ce met à jour chaque fois que le thread2 (où l'algorithme s'exécute) envoi un signal au thread principale. Est ce que le fait d'envoyer un signal à chaque iteration ralentit significativement mon application ?

    Merci

  6. #6
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    La question c'était juste pour voir s'il n'y aurais pas une alternative au thread. Ce que tu as fait me semble très bien.
    Citation Envoyé par Nehmé Voir le message
    Mon progress bar ce met à jour chaque fois que le thread2 (où l'algorithme s'exécute) envoi un signal au thread principale. Est ce que le fait d'envoyer un signal à chaque iteration ralentit significativement mon application ?
    Non. A moins que tu emet aprés chaque instruction

    Qt fourni des algo multithread : QtConcurrent. Cela peut peut-être t'intéresser. Le gros avantage est qu'ils utilisent un nombre adapté à la machine.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 248
    Points : 119
    Points
    119
    Par défaut
    Citation Envoyé par yan Voir le message
    Qt fourni des algo multithread : QtConcurrent. Cela peut peut-être t'intéresser. Le gros avantage est qu'ils utilisent un nombre adapté à la machine.
    Nice ! Je vais probablement regarder ca une fois que j'ai bien compris l'utilisation des threads. Je suis en train de lire ton tutoriel présentement, je suis rendu à la partie QMutex et QMutexLocker, ce que j'ai lu jusqu'à maintenant est très clair.
    Ensuite je vais probablement regarder la documentation de Qt et finalement essayer de parallèliser quelques tâches dans mon application pour mettre en pratique mes lectures !

    Il y a une partie de ton tutos où tu dis que une SLOT est exécuté dans le thread auquel appartient l'instance de sa classe. Moi je passe un pointeur sur mon objet au thread et dans le run du thread je fais:
    pointeurSurObjet->runAlgo()
    Si j'ai bien compris, contrairement au SLOTS, l'appel d'une fonction s'exécute dans le thread où l'appel à été fait et non pas dans le thread auquel appartient l'instance de sa classe.

    Si ma fonction runAlgo() emet un signal qui sera reçu par mon objet lui même, la SLOT dans ce cas s'exécutera dans le thread auquel appartient mon objet ou dans le thread dans lequel mon runAlgo() à été appelé ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    void runAlgo()
    {
      // du code
     
     emit unSignal();
     
      // du code
    }
    D'après ce que j'ai compris, runAlgo() sera exécuté dans le thread où elle a été appelé même si l'objet n'appartient pas à ce thread mais la SLOT sera exécutée dans le thread auquel appartient l'objet.
    Est ce que je me trompe ?

  8. #8
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par Nehmé Voir le message
    D'après ce que j'ai compris, runAlgo() sera exécuté dans le thread où elle a été appelé même si l'objet n'appartient pas à ce thread mais la SLOT sera exécutée dans le thread auquel appartient l'objet.
    Est ce que je me trompe ?
    non, c'est çà.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 41
    Points : 49
    Points
    49
    Par défaut Lien : page 404
    Citation Envoyé par yan Voir le message
    Ok sai-tu pourquoi elle gèle?

    Sinon, j'ai commencé un tuto. Il manque des choses et y as plein de fautes d'orthographes. Mais c'est un bon début. Si cela peut t'aider
    http://ftp-developpez.com/yan-verdav...ng_avec_Qt.pdf
    Bonjour, le lien vers le fichier pdf ne fonctionne pas. J'aurais aimé lire votre document avant de poser mes questions sur les threads.

    Pouvez-vous remettre un lien correct svp ?

    Merci d'avance.

  10. #10
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par psykoprof Voir le message
    Bonjour, le lien vers le fichier pdf ne fonctionne pas. J'aurais aimé lire votre document avant de poser mes questions sur les threads.

    Pouvez-vous remettre un lien correct svp ?

    Merci d'avance.
    elle est en cours de rédaction. Je t'envoie un lien par MP

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    De même, j'aurais aimé lire ce tutoriel pour bien comprendre les threads (je n'en ai pas trouvé encore a part des FAQs et la doc :/)
    J'espère qu'il existe toujours =)

  12. #12
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par Zarkaos Voir le message
    De même, j'aurais aimé lire ce tutoriel pour bien comprendre les threads (je n'en ai pas trouvé encore a part des FAQs et la doc :/)
    J'espère qu'il existe toujours =)
    honte à moi...
    j'ai pas encore eu le temps de terminer (Les enfants ca prend du temps et de l'énergie )
    Voici le lien :

    http://yan-verdavaine.developpez.com/wiki/doku.php

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Merci beaucoup! je vais aller lire tout ça

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

Discussions similaires

  1. [Avis aux pros !] Problèmes de la VCL avec les threads
    Par benj63 dans le forum C++Builder
    Réponses: 3
    Dernier message: 17/02/2006, 22h38
  2. [VB .Net][MDI]Débuter avec les MDI
    Par toto4650 dans le forum Windows Forms
    Réponses: 15
    Dernier message: 19/01/2006, 11h27
  3. Probleme avec les threads
    Par Orahn dans le forum MFC
    Réponses: 5
    Dernier message: 04/11/2005, 10h14
  4. Réponses: 5
    Dernier message: 10/05/2005, 10h22
  5. [langage] Perl a t'il été compiler avec les threads
    Par vodevil dans le forum Langage
    Réponses: 2
    Dernier message: 07/05/2005, 15h00

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