Comment synchroniser deux thread qui n'ont pas le même temps d'attente
cs_maymouta
Messages postés12Date d'inscriptionmercredi 3 février 2010StatutMembreDernière intervention27 mai 2011
-
18 sept. 2010 à 13:03
cs_jojolemariole
Messages postés519Date d'inscriptionmercredi 21 mars 2007StatutMembreDernière intervention19 décembre 2016
-
20 sept. 2010 à 16:31
bonjour à tous,
mon problème et comme suit:
j'ai deux threads
thread 1{
// instructions
appel à threads 2();
}
le threads 1 se met en attente de 0.05 second, tandis que le thread2 se met en attente de 0.4 second
de se fait le programme se bloque car le temps d'attente de thread1 s'écoule avant que le tread2 termine l'exécution de ses instructions.
il y t'il une idée ?
public void performBehavior(){
while ((this.distance(xr,zr,this.tab_obj[0],this.tab_obj[1]))!=0.0){
this.control();
if (this.pointeur>1){
while ((this.distance(xr,zr,this.tab_obj[2],this.tab_obj[3]))>1){
this.control();
}
this.pointeur=1;
}
}
}
voici mon code
en faite la méthode performBehavior() est une méthode qui s'exécute chaque 0.05 second, tandis que la méthode control() est en synchronisation avec un thread dont le temps d'attente est 0.4 second.
et voici le code de la méthode control()
cs_jojolemariole
Messages postés519Date d'inscriptionmercredi 21 mars 2007StatutMembreDernière intervention19 décembre 201625 20 sept. 2010 à 11:59
Salut,
J'aimerais bien t'aider sur ce sujet qui n'a plus trop de secret pour moi.
Cependant, à mon avis, tes explications ne sont pas très claires. J'ai du mal à te comprendre et il y a trop de code qui pollue ta problématique principale. En plus c'est lundi matin...
Peux-tu formuler ça de manière plus synthétique stp, sous forme de pseudo-langage par exemple, juste histoire qu'on comprenne exactement ton souci?
cs_maymouta
Messages postés12Date d'inscriptionmercredi 3 février 2010StatutMembreDernière intervention27 mai 2011 20 sept. 2010 à 15:56
primo merci pour l'intérêt que vous avez donner à mon problème
je vais mieux expliquer ma problématique
j'ai une fonction qui s'appelle performbehavior, est est automatiquement appelé chaque 0.05 second pour exécuter des instructions.
est j'ai une autre fonction qui s'appelle control(), cette fonction fait appelle à un thread qui se met en attente pendant 0.4 second
ainsi la structure de code est comme suit
public class monthread extends Thread (){
public void run(){
// instruction
try {
// pause
Thread.sleep(400);
}
catch (InterruptedException ex) {}
}
}
public void performbehavior(){
// instruction
this.control();
}
public void control(){
monthread m= new monthread();
m.start();
//instructions
}
le problème est comme suit : performbihavior est une méthode qui s'éxecte automatiquement après chaque 0.05 second, mais elle fait appel à une méthode qui s'appelle control(), celle ci fait appel à un thread qui se met en attente pendant 0.4 second, donc la méthode performbihavior va se bloquer car elle doit reprendre l'exécution de ses instructions (l'appel de control() ) après 0.05 tandis que la méthode control() est en attente de 0.4 second.
j'espère mnt le problème est claire.
merci d'avance pour l'aide.