1

comment on fait pour mettre un lock sur une variable ?
tout ce que j'ai trouvé dans la doc, c'est le mot clé synchronized
en gros j'ai une boucle

while(true){
                                if (num_events != 0) {
                                ...
                                }
 }

dans un thread

et je veux utiliser la fonction suivante depuis un autre thread
public synchronized boolean add_event(Resal_event evt) {
		event_buffer[num_events] = evt;
		System.out.println("events : "+num_events);
		num_events++;
		System.out.println("events : "+num_events);
 		return(true);
}


num_events ne change pas toujours de valeurs !
à la sortie, j'ai
events : 0
events : 0
sad
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

2

synchronized(num_events) { si je me rappelle bien. (Essaye!)
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

3

tu veux le mettre où, ton synchronized ?
j'en ai déjà mis un, mais ça n'a pas l'air de suffir sad
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

4

synchronized dans la déclaration une méthode indique que le verrou doit être posé sur 'this'... Kevin parle de faire
add_event() {
  ...
  synchronized (num_events) {
    ...
  }
}


Mais je ne sais pas si ça fonctionne sur des entiers non boxés... Peut-être qu'il faut créer un verrou à part.

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

5

j'ai résolu mon problème love et sans synchronized en plus
c'est assez moche mon truc, ça demande 2 booleens, mais ça marche trilove
j'avais essayé de mettre le synchronized sur le num_events, mais ça ne veut pas sad
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

6

Si ça ne marche pas, tu peux créer un Object num_events_lock=new Object() et faire le synchronized dessus...

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)