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 :

exemple Qt : mandelbrot


Sujet :

Multithreading

  1. #21
    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 Matthieu Brucher Voir le message
    Oui, c'est normal. Et le premier point est aussi normal car le thread est un objet et il est assigné au thread d'où il a été créé, d'om le problème pour un slot sur ce second thread. ce cas est explicitement marqué dans la documentation, il me semble.
    Si tu veux déplacer un objet dans un autre thread, tu dois le faire explicitement (toujours encore indiqué dans la doc).
    J'ai pas dit que c'était pas normal. Au contraire je commence à comprendre pourquoi c'est normal. Je ne pense pas que cela est évident.

    Par contre je ne voie en quoi c'est normale : si l'on connect le signal ce même objet vers un objet de la première thread, la connections est non direct. Alors que, du coup, les deux appartienne à la même thread.
    Pour ce qui est de la doc, c'est peut être maquer ... Mais j'en suis vraiment pas sur...

  2. #22
    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
    C'est à vérifier, je ne pense pas que ce soit le cas, il faut que je regarde le code de plus près.

  3. #23
    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 Matthieu Brucher Voir le message
    C'est à vérifier, je ne pense pas que ce soit le cas, il faut que je regarde le code de plus près.
    dans le main il faut mettre
    bool thread_send_signal à true
    et utiliser le connect :
    QObject::connect(pThread->m_pObj_BeforStart, SIGNAL(mySignal( const myTest & )),pButton , SLOT(mySlot( const myTest & )));

  4. #24
    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 et le boutton ont été créé par le même thread, donc c'est normal que la connexion soit direct, il me semble

  5. #25
    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 Matthieu Brucher Voir le message
    Le thread et le boutton ont été créé par le même thread, donc c'est normal que la connexion soit direct, il me semble
    oui. On doit pas parlé de la même chose.

    avec
    bool thread_send_signal = true;
    et les deux connect :
    QObject::connect(pButton, SIGNAL(mySignal( const myTest & )), pThread->m_pObj_BeforStart, SLOT(mySlot( const myTest & )));
    QObject::connect(pThread->m_pObj_BeforStart, SIGNAL(mySignal( const myTest & )),pButton , SLOT(mySlot( const myTest & )));

    la première est direct et la second non direct
    Alors quel aurait du être direct toutes les deux

  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
    C'est normal en faite.
    La doc dit ca :
    Accessing QObject Subclasses from Other Threads

    QObject and all of its subclasses are not thread-safe. This includes the entire event delivery system. It is important to keep in mind that the event loop may be delivering events to your QObject subclass while you are accessing the object from another thread.

    If you are calling a function on an QObject subclass that doesn't live in the current thread and the object might receive events, you must protect all access to your QObject subclass's internal data with a mutex; otherwise, you may experience crashes or other undesired behavior.

    Like other objects, QThread objects live in the thread where the object was created -- not in the thread that is created when QThread::run() is called. It is generally unsafe to provide slots in your QThread subclass, unless you protect the member variables with a mutex.

    On the other hand, you can safely emit signals from your QThread::run() implementation, because signal emission is thread-safe.
    et dans l'exemple demandelbrot

    Although it looks like a standard signal-slot connection between two QObjects, because the signal is emitted in a different thread than the receiver lives in, the connection is effectively a queued connection
    ...Faut savoir lire entre les lignes

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

Discussions similaires

  1. Checrche Exemple d'application C++ Builder - MySQL
    Par pcatric dans le forum C++Builder
    Réponses: 12
    Dernier message: 11/11/2002, 23h51
  2. [VB6] Lancer un service, par exemple Sql Server
    Par fea dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 16/10/2002, 14h07
  3. recherche exemple simple pour corba en c++
    Par Pinggui dans le forum CORBA
    Réponses: 4
    Dernier message: 06/05/2002, 11h29

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