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 :

synchronisation de thread


Sujet :

C++Builder

  1. #1
    Membre régulier
    Inscrit en
    Août 2005
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 136
    Points : 115
    Points
    115
    Par défaut synchronisation de thread
    Bonjour,

    j'ai un problème de syncronisation entre mes threads.
    Mon programme principal créer 3 instances d'une même thread avec un "contexte" (une structure passé en paramètre) différent.
    Les threads doivent emettre des trames sur un reseaux.
    J'ai synchronisé le tout avec des events et ca marchait très bien.
    Puis j'ai mis un espion sur le reseaux, et la !

    mes threads mettent au minimum (je suis gentil), 10 ms avant de se lancer...
    c'est inacceptable pour mon prog... il faudrais au pire, diviser ce temps par deux.

    voila ma question:
    y a t'il un moyen de dire à windows: j'ai fait un "setevent", vas vite voir s'il y a pas une thread ou deux qui l'atend???

    merci d'avance,

  2. #2
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut
    Salut,
    Jette un oeil du côté de la fonction Synchronize, CheckSynchronize je pense que c'est ce que tu souhaites.

  3. #3
    Membre régulier
    Inscrit en
    Août 2005
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 136
    Points : 115
    Points
    115
    Par défaut
    Ben en fait, j'ai compilé mon projet en version final, et j'ai fermé borland.
    resultat, le temps est tombé à 4 ms.
    raisonnable...

    par contre, je ne comprend pas comment utiliser tes 2 méthodes.

    j'ai déjà eu affaire a elles quand j'avais des thread qui devait acceder au controle d'une form quelconque... mais la, j'ai pas compris...
    ca synchronise avec le prog principal?

    en fait, mes threads ne font qu'attendre un "event", et le traite...
    donc, la synchro vas peter de suite non???

    ps:si je peux gagner encore du temps, je suis preneur!

  4. #4
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    bonjour,
    utilise tu la classe TThread de la VCL ou bien directement les Threads de Win32
    dans le premier cas ou a tu placé ta méthode WaitForSingleObject

    Cordialement

  5. #5
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut
    Sinon, tu dois pouvoir utiliser (s'ils ne sont pas de la classe TThread mais des fonctions lancées en tant que Thread) tout simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application->ProcessMessage();
    Pour rendre la main à l'OS pour exécuter d'autres fonctions (en l'occurence les autres Threads). Le risque est qu'il y ai d'autres tâches à faire qui prennent du temps.

    Pour la méthode Synchronize normalement, cela lance un "thread", en fait une tâche qui, j'ai lu ca quelque part, la pluspart du temps lié à l'affichage de qq chose à l'écran. Mais cette méthode reste à tester, à toi de nous dire si le temps s'en trouve effectivement raccourci.

  6. #6
    Membre régulier
    Inscrit en
    Août 2005
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 136
    Points : 115
    Points
    115
    Par défaut
    en fait, je me suis mal exprimé.
    je suis dans le bout de code qui est lié au drivers.
    et je ne peux pas envoyer de trames tant que je suis pas sortie de ma fonction.
    c'est pour cela que j'ai été obligé de creer mes threads.

    j'ai éssayé le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application->ProcessMessage();
    mais comme je sors pas de ma focntion, les trames sont pas envoyé!

    quel bordel...
    bon, je vais garder ma solution, elle est acceptable pour les contraintes actuels...

    merci de votre aides a tous

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

Discussions similaires

  1. question: Synchronisation de threads
    Par remimichot dans le forum Concurrence et multi-thread
    Réponses: 2
    Dernier message: 23/07/2006, 18h27
  2. Question sur la synchronisation des threads.
    Par sebastieng dans le forum Langages de programmation
    Réponses: 4
    Dernier message: 07/12/2005, 15h55
  3. Réponses: 1
    Dernier message: 23/05/2005, 15h52
  4. Synchronisation de thread
    Par declencher dans le forum Langage
    Réponses: 2
    Dernier message: 07/01/2004, 10h28

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