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

avec Java Discussion :

Gestion de thread


Sujet :

avec Java

  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 87
    Par défaut Gestion de thread
    Bonjour,
    j’ai un problème avec la gestion de sémaphore, pouvez vous m’aider ?
    J’ai un main qui fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Main
    [boucle]
    if(DEBUG) System.out.println("main: asking...");
    semaphore.acquire();
    if(DEBUG) System.out.println("main: got the permit!");
     … traitement …
    semaphore.release();
    if(DEBUG)System.out.println("main: released lock: available Semaphore permits now:" + semaphore.availablePermits());
    [fin boucle]
    En parallèle je lance des processus Thread(i) qui récupère la sémaphore pour faire des traitements sur une variable partagée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Thread(i)
    if(DEBUG) System.out.println(i + " : asking...  available Semaphore permits now: " + semaphore.availablePermits());
    semaphore.acquire();
    … traitement …
    semaphore.release();
    if(DEBUG)System.out.println(i +": released lock: available Semaphore permits now:" + semaphore.availablePermits());
    J'obtient :
    […]
    main: asking...
    main: got the permit!
    main: released lock: available Semaphore permits now:1
    4 : asking... available Semaphore permits now: 0
    6 : asking... available Semaphore permits now: 0
    5 : asking... available Semaphore permits now: 0
    Je ne comprend pas pourquoi le processus 4 n’arrive pas à avoir la sémaphore… Avez vous une idée ?
    J’ai changé le thread pour voir un peu mieux ce qui se passe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Thread(i)
    while(semaphore.availablePermits()==0) {
    	System.out.println(i + " sleep (av permit=0)");
    	Thread.sleep(10000);
    }
     
    if(DEBUG)System.out.println(i + " : asking...  available Semaphore permits now: " + semaphore.availablePermits());
    [...]
    J'obtient :
    main: asking...
    main: got the permit!
    main: released lock: available Semaphore permits now:1
    4 sleep (av permit=0)
    6 sleep (av permit=0)
    5 sleep (av permit=0)
    4 sleep (av permit=0)
    […]
    Merci!

  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 : 76
    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
    on peut voir les déclarations de la variable semaphore telle qu'elle est vue pas les codes?
    (par ex. est-elle volatile?)

Discussions similaires

  1. gestion des threads
    Par yanis97 dans le forum Langage
    Réponses: 6
    Dernier message: 20/04/2006, 12h41
  2. Gestion des Threads
    Par Nalfouille dans le forum MFC
    Réponses: 3
    Dernier message: 05/04/2006, 16h29
  3. Gestion des threads
    Par yanis97 dans le forum C++
    Réponses: 6
    Dernier message: 08/03/2006, 09h39
  4. GEstion des thread
    Par Julien Dufour dans le forum Access
    Réponses: 8
    Dernier message: 06/10/2004, 14h28
  5. [reseaux] Gestion des threads en perl
    Par totox17 dans le forum Programmation et administration système
    Réponses: 2
    Dernier message: 28/11/2002, 09h40

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