Bonjour,
J'ai deux types de threads: 1 "Principal" et 1...n "Secondaires" lancés dan la même fonction. Pour assurer la cohérance de mon programme j'utilise une classe sémaphore:
Mon problème est que , bien que l'interblocage fonctionne entre les threads secondaires, il ne foctionne pas entre pricipal et secondaires (un thread secondaire prend le jeton comme si le Principal ne l'avait pas pris.).J'ai effectué un test,il sagit bien du même semaphore pour chaque thread (adresse memoire identique).
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 public class Semaphore { int n; public Semaphore() { n=1; } public synchronized void P( ) { if (n == 0) { try { wait(); } catch(InterruptedException ex) {}; } n--; } public synchronized void V() { n=1; notify(); } }
Voila , si vous avez des idées, elles sont plus que bienvenues...
Merci d'avance.
Partager