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# Discussion :

Evenement thread-safe ?


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Avatar de teddyalbina
    Homme Profil pro
    Développeur .Net,C++
    Inscrit en
    Janvier 2008
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .Net,C++

    Informations forums :
    Inscription : Janvier 2008
    Messages : 466
    Par défaut Evenement thread-safe ?
    Je voudrais savoir si les évènements sont thread-safe ? C'est une question qui me trotte dans la tete depuis un petit moment.

    Merci

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Oula, c'est un peu vague comme question...
    Tout ce qu'il y a à savoir, c'est que le déclenchement d'un évènement n'est rien de plus qu'un appel de méthode... les handlers s'exécutent donc généralement sur le thread qui déclenche l'évènement, sauf dans certains cas particuliers. Par exemple, le BackgroundWorker appelle les handlers des évènements ProgressChanged et RunWorkerCompleted sur le thread de l'interface graphique, et non sur le thread de travail, de façon à ce qu'on puisse modifier l'interface dans les handlers de ces évènements.

  3. #3
    Membre très actif
    Avatar de teddyalbina
    Homme Profil pro
    Développeur .Net,C++
    Inscrit en
    Janvier 2008
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .Net,C++

    Informations forums :
    Inscription : Janvier 2008
    Messages : 466
    Par défaut
    Donc , si j'ai un event qui ce nomme TOTO et que j'ai 3 threads qui le déclenche bah c pas thread-safe ? donc faut que je mette un vérrou sur l'abonné ?

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par teddyalbina Voir le message
    Donc , si j'ai un event qui ce nomme TOTO et que j'ai 3 threads qui le déclenche bah c pas thread-safe ? donc faut que je mette un vérrou sur l'abonné ?
    je sais pas si je comprends bien ce que tu cherches à savoir... en fait l'évènement en lui-même n'est pas thread-safe ou non, ça dépend plutôt des handlers que tu as implémentés pour le gérer...

  5. #5
    Membre très actif
    Avatar de teddyalbina
    Homme Profil pro
    Développeur .Net,C++
    Inscrit en
    Janvier 2008
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .Net,C++

    Informations forums :
    Inscription : Janvier 2008
    Messages : 466
    Par défaut
    ce que je veux dire c disont que j'ai un event

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    public delegate void AddFileinfoEventHandler(object sender, AddFileinfo e);
    public event AddFileinfoEventHandler AddFile;
    et que j'ai trois trois threads qui lance l'évènement AddFile, il faut donc que dans la fonction abonnée je mette une vérrou quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    void _fonctionabonnée(...)
    {
        lock(objetverrou)
        {
           ....
        }
    }

    ??

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par teddyalbina Voir le message
    ce que je veux dire c disont que j'ai un event

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    public delegate void AddFileinfoEventHandler(object sender, AddFileinfo e);
    public event AddFileinfoEventHandler AddFile;
    et que j'ai trois trois threads qui lance l'évènement AddFile, il faut donc que dans la fonction abonnée je mette une vérrou quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    void _fonctionabonnée(...)
    {
        lock(objetverrou)
        {
           ....
        }
    }

    ??
    Rien n'empêche que _fonctionabonnée soit exécutée par plusieurs threads à la fois, donc si elle manipule des objets qui ne sont pas thread-safe, il faut effectivement un lock (mais uniquement dans ce cas-là)

Discussions similaires

  1. [RCP] Treeviewer non thread-safe ?
    Par Guildux dans le forum Eclipse Platform
    Réponses: 4
    Dernier message: 09/01/2007, 13h00
  2. fonction de stdio.h thread safe ??
    Par boolzor dans le forum POSIX
    Réponses: 3
    Dernier message: 30/04/2006, 20h03
  3. Code "Thread Safe" ?
    Par Neitsa dans le forum C++
    Réponses: 3
    Dernier message: 23/12/2005, 14h33
  4. [Language]Immutable & Thread-Safe
    Par Repti dans le forum Concurrence et multi-thread
    Réponses: 4
    Dernier message: 21/12/2005, 15h50
  5. [MFC] CMAP non thread safe ?
    Par fmarot dans le forum MFC
    Réponses: 5
    Dernier message: 04/10/2005, 13h21

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