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 :

QextSerialPort et le multithreading avec QThread [QThread]


Sujet :

Multithreading

  1. #21
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 68
    Par défaut
    En fait, je n'arrive pas à compiler avec CODEBLOCKS, donc je le fais manuellement.

    Et donc, il suffisait de lancer un qmake... Pfff, parfois ca tient à pas grand chose quand meme !!

    Merci de ton aide, je galere encore un peu à la deconstruction, mais ça tourne !

  2. #22
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 035
    Par défaut
    Citation Envoyé par neoirto Voir le message
    En fait, je n'arrive pas à compiler avec CODEBLOCKS, donc je le fais manuellement.
    C'est pour cela que je te conseil QtCreator. C'est assez proche de code::block et c'est adapté à Qt

  3. #23
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 68
    Par défaut
    Oui, il faut que je regarde ca...

    J'ai encore une question d'ordre plus générale concernant les Qthread. J'ai un pentium E5300 2 cores.

    Lorsque je crée 2 threads, le systeme les reparti un dans chaque thread ?

    Et lorsque j'ai admettons 4 threads, c'est l'hyperthreading qui prends le relai c'est ca ?

    Jusqu'à combien de thread peut-on monter raisonnablement en pouvant attendre un bénéfice sur les perfs ?

  4. #24
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 035
    Par défaut
    Citation Envoyé par neoirto Voir le message
    Lorsque je crée 2 threads, le systeme les reparti un dans chaque thread ?
    Pas forcement... C'est l'OS qui décide. Il me semble qu'il peut même switcher l’exécution du thread entre les deux proc suivant le besoin.

    Et lorsque j'ai admettons 4 threads, c'est l'hyperthreading qui prends le relai c'est ca ?
    pareil

    Citation Envoyé par neoirto Voir le message
    Jusqu'à combien de thread peut-on monter raisonnablement en pouvant attendre un bénéfice sur les perfs ?
    Tous dépend de ce que tu fais... Il n'y as pas de réponse.
    Citation Envoyé par yan
    Je pense qu'il y as deux cas
    1- Faire fonctionner plusieurs objet en parallèle.
    * Si leur exécution bloque le thread, il faut faire un thread pour chaque objet.
    * S'ils exploitent l'eventloop de Qt, tu peut créer un nombre restreins de thread et répartir leurs exécution sur ces threads.

    2- Pour la rapidité.
    Il faut savoir que chaque therad utilisé va ajouter du temps sur l’exécution de la tâche... Pour faire simple
    * T le temps d'une tâche.
    * t le temps ajouté par l'utilisation d'un thread.
    * N nombre de thread.
    Donc quand on exécute la tâche sur N threads, elle est en réalité exécuté en T+N*t. Mais comme ils sont N le temps d'un points de vue utilisateur est T / N + t.
    Si on utilise trop de thread que va t'il se passer? t va augmenter et à un moment on aura T < T / N + t
    Donc on aura rien gagner et même perdu.
    Quand on parle de perf, en principe le nombre de thread ne devrait pas dépasser le nombre de coeur.

  5. #25
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 68
    Par défaut
    Ok, donc il ne faut pas abuser des bonnes choses, c'est pigé... Et assez logique en fait.

    Sinon, autre question (promi après j'arrete !) :
    Les données transitants sur les SIGNAL / SLOT sont libérées de la mémoire automatiquement ?
    Parce que j'ai l'impression que mes Qimage font gonfler la RAM en laissant le programme tourner ?

  6. #26
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 035
    Par défaut
    Citation Envoyé par neoirto Voir le message
    Les données transitants sur les SIGNAL / SLOT sont libérées de la mémoire automatiquement ?
    En principe oui.
    Peut tu montrer la signature de ton emit et de ton slot?

  7. #27
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 68
    Par défaut
    Voila :

    Le .h :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    class QOpenCVWidget : public QThread 
    {
     
    	Q_OBJECT
     
        public:
            QOpenCVWidget( QObject * parent = 0 );
            ~QOpenCVWidget();
    		void run();
            void putImage(IplImage *);
     
     
    	signals:
    		void Emit_frame_webcam( QImage image_a_envoyer );
     
        private:
            QImage image;
    		CvCapture *webcam;
     
    	// private slots:
    		// void close_COM();
     
    };
    Le slot :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     	void recoit_Qimage_Opencv( QImage FRAME_webcam )
    	{
    		//////// ds un slot :
    		imagelabel->setPixmap(QPixmap::fromImage(FRAME_webcam));
    	}
    Que j'appelle avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    emit Emit_frame_webcam( image );
    La RAM gonfle tres lentement, car la résolution de la WEBCAM est limitée, mais si je commente :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    // imagelabel->setPixmap(QPixmap::fromImage(FRAME_webcam));
    ...dans le slot, ca ne gonfle plus (la vidéo ne s'affiche plus egalement ce qui n'est pas exactement l'effet recherché !)

    Merci de ton aide

  8. #28
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 035
    Par défaut
    Citation Envoyé par neoirto Voir le message
    La RAM gonfle tres lentement
    c'est à dire?
    es ce que tu as essayé de voir si elle ne stagne pas au bout d'un moment?

  9. #29
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 68
    Par défaut
    Et bien la RAM passe de 76 Mo à 80 en 5-10 minutes, de facon très progressive, et apparemment, ça ne s'arrete pas en route !

    Alors que quand je commente la ligne citée, ca reste stable à 76 ??!!

  10. #30
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 035
    Par défaut
    Citation Envoyé par neoirto Voir le message
    Et bien la RAM passe de 76 Mo à 80 en 5-10 minutes, de facon très progressive, et apparemment, ça ne s'arrete pas en route !

    Alors que quand je commente la ligne citée, ca reste stable à 76 ??!!
    Il faut se méfier de cette mesure. Pour l'instant je dirais pas que tu as une fuite. Si tu était monté au dessus de 1Go je dit pas mais là ça me semble plutôt normale.

  11. #31
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 68
    Par défaut
    Bon !

    Et bah je suis content d'être étanche ! Merci pour ton aide. Je crois que je peux passer en [Résolu]. Si je m'aperçois que je prends l'eau, ca sera un autre topic...

    Moulte gratitude

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Multithreading avec section critique ?
    Par Cokate dans le forum C#
    Réponses: 8
    Dernier message: 25/08/2008, 16h05
  2. Lancer une application multithread avec msdos
    Par SpIrIt505050 dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 11/06/2008, 19h47
  3. Multithread avec partage de ressources et join
    Par Razgriz dans le forum Langage
    Réponses: 4
    Dernier message: 09/05/2008, 10h41
  4. Multithreading avec Visual Basic pour Access
    Par NoViceDel dans le forum VBA Access
    Réponses: 2
    Dernier message: 12/10/2006, 21h18

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