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

Langage Delphi Discussion :

Opération mathématique entre deux Threads


Sujet :

Langage Delphi

  1. #1
    Membre averti

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Points : 447
    Points
    447
    Par défaut Opération mathématique entre deux Threads
    Salut tout le monde,

    Je voudrais faire un calcul (rendement) dans mon programme.
    Mon problème est que mes variables se trouvent dans deux threads.
    Je ne sais pas comment faire, pour y accéder, sans interrompre l 'éxécution des threads.


    Merci d'avance.

  2. #2
    Membre éclairé
    Avatar de MD Software
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 613
    Points : 680
    Points
    680
    Par défaut
    Les threads [et l'application] partagent le même tas, mais ils ont chacun une pile à eux.
    Tu peux aussi mettre tes variables dans les zones publiques de tes classes Thread. Tu pourras alors y accéder par les instances de tes threads.

  3. #3
    Membre averti

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Points : 447
    Points
    447
    Par défaut
    désolé, mais tu veux dire quoi par instance ?

  4. #4
    Membre éclairé
    Avatar de MD Software
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 613
    Points : 680
    Points
    680
    Par défaut
    C'est l'objet.
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      var monInstance : TObject;
    begin
      monInstance := TObject.Create;
      //ici, monInstance est une objet, c'est une instance de la classe TObject
    end;

  5. #5
    Membre averti

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Points : 447
    Points
    447
    Par défaut
    mais avec ta méthode cela veut donc dire que je dois instancier par exemple mon thread 1 dans mon thread2 si je veux pouvoir accéder à ces valeurs ?

  6. #6
    Membre éclairé
    Avatar de MD Software
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 613
    Points : 680
    Points
    680
    Par défaut
    Citation Envoyé par rvzip64
    mais avec ta méthode cela veut donc dire que je dois instancier par exemple mon thread 1 dans mon thread2 si je veux pouvoir accéder à ces valeurs ?
    Mais ? ce que tu veux en fait, c'est qu'un thread accède aux infos d'un autre ?

  7. #7
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Salut
    si les valeurs auxquelles tu veux accéder (modifier?) sont utilisées par le thread, alors, tu dois passer par les section critiques...
    Pour plus d'infos: sur TCriticalSection...

  8. #8
    Membre averti

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Points : 447
    Points
    447
    Par défaut
    désolé pédro mais les sections critiques bloque tous les threads rattachés à un meme processus. Or moi je veux accéder au valeur sans arrété mes threads !

  9. #9
    Membre averti

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Points : 447
    Points
    447
    Par défaut
    Mais ? ce que tu veux en fait, c'est qu'un thread accède aux infos d'un autre ?
    oui tout a fait, mais en fait dans mon programmes j ai mon thread 1 et 2 qui sont instancier , dans mon prog principal. Vu que je "surcharge" le create du thread pour faire passer des paremètres, je ne peux pas me permettre de réinstancier un thread dans un autre, autrement plus rien ne va fonctionner .

  10. #10
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Citation Envoyé par rvzip64
    désolé pédro
    Mais non, mais non...
    Citation Envoyé par rvzip64
    mais les sections critiques bloque tous les threads rattachés à un meme processus. Or moi je veux accéder au valeur sans arrété mes threads !
    Effectivement, Tu peux t'en passer si tu veux juste lire tes valeurs...
    Si c'est pour les modifier, tu es obligé d'utiliser les sections critiques...
    C'est pour ça que j'ai dit
    Citation Envoyé par Pedro204
    (Modifier?)
    Bon dev'

  11. #11
    Membre averti

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Points : 447
    Points
    447
    Par défaut
    Oups, pardon j avais fait attention .... mille excuse pédro

  12. #12
    Membre actif
    Profil pro
    ----
    Inscrit en
    Mai 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ----

    Informations forums :
    Inscription : Mai 2004
    Messages : 185
    Points : 245
    Points
    245
    Par défaut
    Tu peut utilisé des pointeurs. Chaqu'un de tes threads recevant l'un d'eux. Ensuite, tu pose des sections critiques.
    Pour la question du blocage des autres threads par les sections critiques, dit toi qu'un thread en cours d'execution empèche les autres threads de s'écuter (sauf pour Intel HT et technique multiprocesseur ). La section critique empèche juste la rotation des taches.
    Si tu n'apprécis pas cette approche trop blocante à ton avis, utilise un mutex ou un semaphore pour gérer les prioritées d'accés. ça ne bloquera alors que l'accés au donnée. Par contre, il faudra, avant l'accés, vérifier l'état de la ressource. Si elle est disponible, on la bloque, on y'accédes, et o la débloque; dans le cas contraire... on met en veille le thread jusqu'a la libération de la ressoure

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/03/2013, 15h04
  2. Réponses: 3
    Dernier message: 09/07/2009, 15h37
  3. Probleme d'interblocage entre deux Thread
    Par brahimouledriah dans le forum Concurrence et multi-thread
    Réponses: 1
    Dernier message: 08/11/2007, 09h20
  4. synchronisation entre deux threads
    Par chabfive dans le forum Concurrence et multi-thread
    Réponses: 9
    Dernier message: 03/11/2006, 12h17
  5. Communication entre deux Threads
    Par rvzip64 dans le forum Langage
    Réponses: 13
    Dernier message: 28/01/2005, 09h14

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