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 :

Algorithme de Peterson


Sujet :

Langage Java

  1. #1
    Membre habitué
    Inscrit en
    Octobre 2006
    Messages
    446
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 446
    Points : 128
    Points
    128
    Par défaut Algorithme de Peterson
    bonjour
    je ne sais pas si j'ai choisi le bon endroit pour poster mon message.mais je cherche la résolution de l'algorithme de peterson à l'aide des automate comme ceci http://www.lb.auf.org/chebaro/ pour les algorithmes de synchronisation.
    Merci

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2006
    Messages : 25
    Points : 26
    Points
    26
    Par défaut
    Cherche plus fort et tu trouveras...

  3. #3
    Futur Membre du Club
    Inscrit en
    Janvier 2011
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    salut aussi je sais pas si c est le bon endroit pour poster sa .........
    mon problème c est que la console n affiche rien (quelle Processus est entrée a la section critique) voila le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    public class peterson extends Thread {
    	static int tour = 0;
    	static boolean[] drapeau = {false,false};
    	int i, j;
    	peterson(int x){i = x; j = 1-x;}
    	public void run() {
    		while (true) {
    			drapeau[i] = true;
    			tour       = j;
    			while (drapeau[j] && tour==j) 
    				System.out.println("resourse utilisé par le thread" + j);
    			drapeau[i]=false;
     
    		}
    	}
    	public static void main(String[] args) {
    		Thread thread0 = new peterson(0),thread1 = new peterson(0);
    		thread0.start();
    		thread1.start();
     
    	}
     
    }

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2010
    Messages : 22
    Points : 34
    Points
    34
    Par défaut
    Algorithme Peterson pour 2 processus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    public class Peterson implements Runnable {
     
        private static boolean[] in = { false, false };
        private static volatile int turn = -1;
     
        public static void main(String[] args) {
            new Thread(new Peterson(0), "Thread - 0").start();
            new Thread(new Peterson(1), "Thread - 1").start();
     
        }
     
        private final int id;
     
        public Peterson(int i) {
            id = i;
        }
     
        private int other() {
            return id == 0 ? 1 : 0;
        }
     
        @Override
        public void run() {
            in[id] = true;
            turn = other();
            while (in[other()] && turn == other()) {
                System.out.println("[" + id + "] - Waiting...");
            }
            System.out.println("[" + id + "] - Working ("
                    + ((!in[other()]) ? "other done" : "my turn") + ")");
            in[id] = false;
        }
    }

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Vous faites un concours de déterrage de Threads?

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Et accessoirement, en théorie il ne suffit pas que int turn tout seul soit volatile.
    Il faudrait que les booléens de in le soient aussi, ce qui est impossible avec un tableau normal.
    Une solution serait d'utiliser un AtomicIntegerArray et de s'en servir comme un tableau de booléens.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. algorithme de peterson pour n threads
    Par aliouchi dans le forum Linux
    Réponses: 0
    Dernier message: 24/12/2013, 15h51
  2. Algorithme de randomisation ... ( Hasard ...? )
    Par Anonymous dans le forum Assembleur
    Réponses: 8
    Dernier message: 06/09/2002, 14h25
  3. Recherche de documentation complète en algorithmes
    Par Anonymous dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 29/03/2002, 12h09
  4. Algorithme génétique
    Par Stephane.P_(dis Postef) dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 15/03/2002, 17h14

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