Bonjour
j'ai le code suivant que je voulais utiliser pour produire une chose proche du l'algorithme du rendez-vous, on utilisant un lock et sa condition le code est le suivant :
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
 
...
 Lock veroux4 = new ReentrantLock();
 Condition tousIci  = veroux4.newCondition();
 ...
veroux4.lock();
               nombre++;
           if(nombre==5){
                   System.out.println("Le processus n° "+num+" débloque les autres processus.");
                   tousIci.signalAll();
           }
           else{
                try {
                    System.out.println("Le processus n° " + num + " attend les autre processus.");
                    tousIci.await();
                    System.out.println("Le processus n° " + num + " est débloquer.");
                } catch (InterruptedException ex) {
                    Logger.getLogger(MathThread.class.getName()).log(Level.SEVERE, null, ex);
                }
           }
           veroux4.unlock();
les 4 premiers threads seront bloquer mais les 5 quant il passe et il exécute tousIci.signalAll(), ces thread là ne sont pas réveillés, alors qui le seule thread qui passe est ce-lui qui a exécute tousIci.signalAll(), et n'a pas exécuté tousIci.await();

je sais que les barrières cycliques seront plus performantes, mais je veux surtout savoir la raison de ce dis-fonctionnement.
Merci pour votre aide.