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

Probleme de concurrence


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de guigz2000
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 100
    Par défaut Probleme de concurrence
    J'ai un gros probleme de concurrence dans l'appli que je developpe:

    3 classes:
    A (thread)... crée un arbre (liste chainée)
    B... Interface entre les 2 threads
    C (thread)...traite l'arbe

    La classe B possede deux references a une structure "arbre" vide preallouée.
    3 methodes:1 accesseur pour recuperer chaque reference et une fonction de "swap" des references.

    Le thread A recupere la reference 1,et remplit l'arbre.Si B est fini, il "swap" les references et lance le thread B .Il reboucle ensuite.

    Le thread B recupere la reference 2,traite l'arbre et le vide,indique au thread A que l'operation est finie et se termine.

    En gros,c'est un dual buffering...

    Mon probleme:
    J'ai des problemes de synchronisation de donnée.La synchronisation des operations des threads est bonne,mais lorsque le thread A recupere la reference une deuxieme fois,c'est comme si il lisait une memoire cache, en gros, l'arbe obtenu n'est pas l'arbre vidé par le thread B mais l'arbre plein rempli il y a 2 cycles....

    Quelqu'un a une idée pour corriger ce probleme?

  2. #2
    Membre Expert
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    Citation Envoyé par guigz2000 Voir le message
    mais lorsque le thread A recupere la reference une deuxieme fois,c'est comme si il lisait une memoire cache
    ça peut être exactement ça: tu connais le modèle mémoire de Java?
    (sinon difficile sans voir quelques détails du code à propos des synchronisations mémoire)

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 342
    Par défaut
    Salut,

    sans code pas simple de voir ce que tu a fait mais bon.

    pour moi il te faut 2 flag :
    - A écrie sont arbre / A veux swap
    - C lie ou veux sont arbre / C attend un nouvelle arbre

    si A veux swap et C lie l'arbre on attend alors a attend
    si c veux lire un arbre et A swap alors c attend

    pour t' mémoire cache c'est peut être plus une erreur de référence

Discussions similaires

  1. Probleme de concurrence
    Par jmjmjm dans le forum Développement
    Réponses: 3
    Dernier message: 30/03/2010, 04h59
  2. Probleme de concurrence
    Par Alec6 dans le forum EDT/SwingWorker
    Réponses: 3
    Dernier message: 22/10/2008, 15h37
  3. Probleme de concurrence avec les THREADS
    Par L4BiN dans le forum Concurrence et multi-thread
    Réponses: 2
    Dernier message: 31/07/2006, 16h33
  4. Problème de concurrence
    Par soulhouf dans le forum Sécurité
    Réponses: 3
    Dernier message: 09/05/2006, 12h02
  5. Problème de concurrence d'accès sous Windows
    Par DJZiaK dans le forum SQLite
    Réponses: 6
    Dernier message: 10/05/2005, 17h21

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