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 :

Appel trop fréquent d'une fonction


Sujet :

Multithreading

  1. #1
    Membre éclairé Avatar de Matthieu76
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2013
    Messages
    568
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Mars 2013
    Messages : 568
    Points : 890
    Points
    890
    Par défaut Appel trop fréquent d'une fonction
    Bonjour,
    j'utilise un thread pour mes calculs lourds dans mon programme et j'utilise une fonction pour rafraîchir l'affichage en temps réel.
    Mon problème est que ma fonction d'affichage est appelé plus vite qu'elle n'est l’exécute. (Elle est appeler dans ma boucle de calculs.)

    Du coup, j'ai essayer de passer par un boolean pour résoudre le problème mais celui-ci persiste.

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void Thread::refresh_display()
    {
       if(Parameters::is_refreshing_neural_network_display == false)
       {
            emit message_refresh_display();
       }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    connect(Thread::instance(), SIGNAL(message_refresh_display()), this, SLOT(refresh_neural_networks_buttons()));
     
    void MainWindow::refresh_neural_networks_buttons()
    {
        Parameters::is_refreshing_neural_network_display = true;
        // affichage des valeurs de la base de données
        Parameters::is_refreshing_neural_network_display = false;
    }
    Es-ce que quelqu'un pourrais me conseiller ?

    Merci d'avance

  2. #2
    Membre éclairé Avatar de Matthieu76
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2013
    Messages
    568
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Mars 2013
    Messages : 568
    Points : 890
    Points
    890
    Par défaut
    J'ai solutionné ça en appelant la fonction de refresh seulement quand le résultat est intéressant, ça fonctionne bien mais c'est pas une solution utiles.

  3. #3
    Membre éclairé Avatar de Matthieu76
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2013
    Messages
    568
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Mars 2013
    Messages : 568
    Points : 890
    Points
    890
    Par défaut re
    En faite la solution que j'ai est une solution à court terme mais va falloir que je change ça, personne pour m'aider ?

  4. #4
    Membre émérite
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Points : 2 834
    Points
    2 834
    Par défaut
    Tu devrais limiter l'envoi du signal aux cas où tu as réellement besoin de rafraichir l'écran, si les données ont changé. Demande toi ce que tu as réellement besoin d'afficher ou pas pendant ton traitement lourd.

    Ensuite tu as l'air de récupérer tes données depuis une base de données, c'est un peu lourd de faire ça en boucle, tu devrais regarder du côté des Model/View de Qt et éventuellement avoir tes données en cache dans la mémoire si tu les modifies souvent.

  5. #5
    Membre éclairé Avatar de Matthieu76
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2013
    Messages
    568
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Mars 2013
    Messages : 568
    Points : 890
    Points
    890
    Par défaut re
    Merci pour l'info des Model/View de Qt, je note ça de côté et je verrais ça quand mon programme fonctionnera en entier.

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

Discussions similaires

  1. hashtable pour éviter trop de paramètres à une fonction ?
    Par _LittleFlea_ dans le forum Général Java
    Réponses: 6
    Dernier message: 14/08/2009, 17h24
  2. [Débutant] Appel de variable dans une fonction déjà défini dans un prog principal
    Par hollowdeadoss dans le forum MATLAB
    Réponses: 8
    Dernier message: 19/09/2008, 13h02
  3. appeler le destructeur dans une fonction
    Par asoka13 dans le forum C++
    Réponses: 3
    Dernier message: 12/05/2008, 00h24
  4. Fonction appelant un pointeur vers une fonction
    Par jacklafrip dans le forum C++
    Réponses: 8
    Dernier message: 30/01/2008, 14h06
  5. comment appeler un widget depuis une fonction
    Par Thierry {-|-o dans le forum Tkinter
    Réponses: 3
    Dernier message: 02/01/2008, 23h23

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