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

Delphi Discussion :

variables partagées entre des threads


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 14
    Par défaut variables partagées entre des threads
    Bonjour
    Je debute ds la programmation ac des threads et je cherche un moyen pour que 2 thread communiquent entre eux

    J'ai un premier thread qui recupere des donnees a partir du port parallele et qui les affiche sur mon application
    Et j'ai un deuxieme thread qui doit recuperer ces donnees, les mettre en memoire et les envoyer sur excel via une liaison ole
    Mon probleme est que je ne sais pas comment partager une variable entre mon thread1 (qui est lance plusieurs fois, 1 pour chaque canal) et mon thread2, qui doit recuperer ttes les donnees pour les ecrire de maniere groupé

    Je suppose qu'il existe une maniere toute simple de resoudre ce pb, mais jusqu'a present, je n'ai trouve de reponse nullepart

    Cordialement Aragorc

  2. #2
    Membre chevronné
    Avatar de Philippe Gormand
    Inscrit en
    Mars 2002
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 330
    Par défaut
    Salut.

    Il faut utiliser une variable globale. C'est expliqué dans l'aide de DELPHI.

    A+

  3. #3
    Membre averti
    Inscrit en
    Novembre 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 14
    Par défaut
    merci pour l'aide, je crois que ca va bien m'aider

    ++

  4. #4
    Membre émérite Avatar de Caine
    Inscrit en
    Mai 2004
    Messages
    1 028
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 028
    Par défaut
    C'est un peu plus compliqué.

    En effet, tu peux utiliser une variable globale, mais pour garantir son intégrité, tu dois synchroniser son accès en écriture et en lecture par mutex.

    Sinon il y a un risque de lire ou d'écrire une variable dans un état indéterminé.

    Par exemple, si le thread d'écriture fait un INC(var), en assembleur ça donnera 2 opérations. Si le thread 2 lit la var alors que seule la 1ère opération assembleur est effectué, il lira une valeur intermédiaire qui n'est pas forcément la valeur finale.

    CreateMutex est ton ami

  5. #5
    Membre averti
    Inscrit en
    Novembre 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 14
    Par défaut
    j'ai deja un mutex
    etant donne que mon thread1 lit des donnees depuis un circuit electronique et je ne peux pas lire tous les canaux en meme tps
    Createmutex est plus qu'un ami ds mon cas
    Par contre, je me demandais si le mutex ne ralenti pas un peu l'execution du programme
    Ai-je interet a 10 threads ac une partie de ses instructions qui verrouille le mutex, ou a repeter 10 fois ttes les instructions ds un thread?

  6. #6
    Membre émérite Avatar de Caine
    Inscrit en
    Mai 2004
    Messages
    1 028
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 028
    Par défaut
    Par définition, le mutex ne ralentis pas le système, ni l'appli.

    Mais il permet de scheduler celle-ci, donc si le code est mal écris, il peut y avoir perte de performances.

    Pour ta dernière question, il est difficile d'y répondre sans avoir le code, ou une estimation du nombre de lignes...

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

Discussions similaires

  1. Réponses: 14
    Dernier message: 11/07/2008, 13h09
  2. Comment passer une information entre des threads ?
    Par TheCaribouX dans le forum C#
    Réponses: 10
    Dernier message: 31/03/2008, 14h29
  3. Communication entre des threads
    Par Analog13 dans le forum MFC
    Réponses: 37
    Dernier message: 17/08/2007, 16h02
  4. partage de donné entre 2 thread
    Par firejocker dans le forum MFC
    Réponses: 7
    Dernier message: 26/01/2006, 14h54
  5. Comment partager les ressources entre 2 threads?
    Par remimichot dans le forum Concurrence et multi-thread
    Réponses: 7
    Dernier message: 29/12/2005, 09h17

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