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 :

Multi-Thread et membres Static


Sujet :

C#

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 91
    Points : 67
    Points
    67
    Par défaut Multi-Thread et membres Static
    Bonjour à tous,

    Mon application utilise plusieurs threads qui appelent tous une classe qui ne contient que des méthodes statiques. Cette classe contient plusieurs variables privées statiques.
    J'ai remarqué que tous les threads partagaient les mêmes variables donc ça ne fonctionnait pas. Après quelques recherches j'ai vu qu'il fallait mettre l'attribut [ThreadStatic] afin que chaque thread utilise ses propres variables. J'ai donc mis cet attribut devant toutes mes variables private static.
    Toutefois que constate toujours le même problème, c'est à dire que mon thread A va modifier les variables de mon thread B et donc le traitement ne se fait pas correctement ...
    Je ne fais peut-être pas la bonne application de l'attribut? Quelqu'un a-t-il une idée ?

    Merci

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 177
    Points : 4 489
    Points
    4 489
    Par défaut
    Pourquoi faire des variables statiques si c'est pour les utiliser en non statique?
    Je ne suis qu'un pauvre débutant alors ne frappez pas si mes idées ne sont pas bonnes

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 91
    Points : 67
    Points
    67
    Par défaut
    Si j'utilise en statique, d'ailleurs je suis obligée. Au début de mon soucis j'ai essayé de tout passer en méthodes d'instances mais j'ai été bloquée au bout d'un moment.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 91
    Points : 67
    Points
    67
    Par défaut Nouvelle Question
    J'ai une autre question. j'ai des méthodes statiques qui contiennent des variables locales. Ces méthodes sont appelées par différents thread simultanément. J'ai l'impression que les thread s'emèlent les pinceaux au niveau des variables locales. Est-ce que vous pensez que c'est possible ? si oui, comment palier à ce problème ?

  5. #5
    Membre habitué
    Homme Profil pro
    Architecte C#
    Inscrit en
    Février 2003
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte C#

    Informations forums :
    Inscription : Février 2003
    Messages : 78
    Points : 144
    Points
    144
    Par défaut
    Bonjour,

    Non, rassure toi, tout ce qui est crée dans une méthode n'est consommé que dans l'appel de cette méthode.

    En revanche, tout ce qui est variable d'instance ou statiques, elles comportent des risques et se doivent d'etre verrouillées si tu utilise un accès concurrent.

    Petite particularité de l'attribut ThreadStatic, il ne s'initialise qu'une fois, pour un Thread lorsque le constructeur statique de ta classe est appellé.
    Pour les autres instances, c'est à ta charge de vérifier si il est null et le cas échéant de l'initialiser.

    Pour ton problème original, le plus "propre" serait de trimballer tes données d'une méthode à l'autre.

    Après, sans besoin précis, dur à dire si ca rentre dans tes contraintes.

    Bonne journée.

Discussions similaires

  1. Tri multi-threadé
    Par Tifauv' dans le forum C
    Réponses: 8
    Dernier message: 28/06/2007, 09h00
  2. Réponses: 2
    Dernier message: 15/05/2004, 18h33
  3. Réponses: 16
    Dernier message: 30/01/2004, 11h05
  4. [VB6][active x] faire du multi-thread avec vb
    Par pecheur dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 20/05/2003, 12h01
  5. [Kylix] exception qtinft.dll et multi-threading
    Par leclaudio25 dans le forum EDI
    Réponses: 3
    Dernier message: 27/03/2003, 18h09

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