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++Builder Discussion :

Besoin de précision sur TThread


Sujet :

C++Builder

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 61
    Points : 48
    Points
    48
    Par défaut Besoin de précision sur TThread
    1) Dans un objet dérivé de TThread j'ai une propriété qui initialise une variable membre privée. Cette propriété, écrite par l'application principale, est cycliquement regardée dans le Exécute() du thread pour en faire quelque chose. Y a t-il des précautions particulières à prendre pour l'accès a cette variable ?
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    //***** FICHIER .H ***********************************
    #ifndef Unit2H
    #define Unit2H
    #include <Classes.hpp>
     
    class MonThread : public TThread
    {            
    private:
       AnsiString FBuffer;
     
    protected:
       void __fastcall Execute();
     
    public:
       __fastcall MonThread(bool CreateSuspended);
       __property AnsiString Buffer = { read = FBuffer, write = FBuffer};
    };
    #endif
     
    //***** FICHIER .CPP *********************************
    #include "Unit2.h"
    #pragma package(smart_init)
     
    __fastcall MonThread::MonThread(bool CreateSuspended)
       : TThread(CreateSuspended)
    {
    }
     
    void __fastcall MonThread::Execute()
    {
       //----  Placer le code du thread ici  ----
       while(! Terminated)
       {
          Sleep(100);
          // Ici Faire quelque chose avec FBuffer 
     
       }
    }

    2) Lorsque l'application principale appelle une méthode d'un objet dérivé de TThread, cette méthode est-elle appelée dans le contexte du thread principal ou dans celui du thread courant ?

    3) Si depuis Execute() de l'objet Thread, j'appelle une fonction du thread principal via Synchronize(), la dite fonction peut-elle appeler à son tour sans pb une méthode de ce même l'objet Thread ?

    Merci d'avance pour votre aide.

  2. #2
    Membre averti
    Avatar de Neo41
    Inscrit en
    Janvier 2003
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 241
    Points : 403
    Points
    403
    Par défaut Re: Besoin de précision sur TThread
    Bonjour,

    Citation Envoyé par psau
    1) Dans un objet dérivé de TThread j'ai une propriété qui initialise une variable membre privée. Cette propriété, écrite par l'application principale, est cycliquement regardée dans le Exécute() du thread pour en faire quelque chose. Y a t-il des précautions particulières à prendre pour l'accès a cette variable ?
    Si ta variable risque d'être utilisée par plusieurs threads, il vaut mieux mettre en place une section critique (TCriticalSection) ou un autre mécanisme (comme les sémahpores) qui permet de garantir qu'un seul thread à la fois peut accéder au contenu de cette variable.

    Citation Envoyé par psau
    2) Lorsque l'application principale appelle une méthode d'un objet dérivé de TThread, cette méthode est-elle appelée dans le contexte du thread principal ou dans celui du thread courant ?
    A mon avis elle sera appelée dans le contexte du thread contenant la méthode, mais ce n'est que mon avis.

    Citation Envoyé par psau
    3) Si depuis Execute() de l'objet Thread, j'appelle une fonction du thread principal via Synchronize(), la dite fonction peut-elle appeler à son tour sans pb une méthode de ce même l'objet Thread ?
    Euhh oui pourquoi pas ? C'est un simple appel de fonctions, même s'ils sont dans des threads différents.
    Mais il faut toujours faire attention aux zones mémoires partagées par plusieurs threads.

    Citation Envoyé par psau
    Merci d'avance pour votre aide.
    De rien et bon courage 8)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 61
    Points : 48
    Points
    48
    Par défaut
    Merci c + clair...

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

Discussions similaires

  1. Besoin de précision sur le compilo
    Par mensoif dans le forum C#
    Réponses: 2
    Dernier message: 03/03/2009, 21h24
  2. Map trois dim : Besoin de précision sur un tuto de gamedev.net
    Par TheDrev dans le forum Développement 2D, 3D et Jeux
    Réponses: 1
    Dernier message: 04/09/2008, 19h29
  3. CRC, besoins de précision sur la facon de calculer svp
    Par italiasky dans le forum Réseau
    Réponses: 4
    Dernier message: 21/06/2008, 09h17
  4. Besoin de précision sur Regex
    Par Kyo-AzN dans le forum Langage
    Réponses: 4
    Dernier message: 25/02/2008, 16h56
  5. [POO Basique] Besoin de précision sur une notion de base
    Par alois.cochard dans le forum Langage
    Réponses: 8
    Dernier message: 15/09/2006, 09h01

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