Sleep precis

Signaler
Messages postés
6
Date d'inscription
vendredi 21 novembre 2003
Statut
Membre
Dernière intervention
28 octobre 2005
-
hercules83
Messages postés
6
Date d'inscription
vendredi 21 novembre 2003
Statut
Membre
Dernière intervention
28 octobre 2005
-
Bonjour
Est ce qu'il existe un sleep plus precis que celui utilisé dans les threads ?
merci

SIMBAD

7 réponses

Messages postés
490
Date d'inscription
vendredi 30 janvier 2004
Statut
Membre
Dernière intervention
13 mai 2009
2
qu'est ce que tu veux dire au juste?
Messages postés
490
Date d'inscription
vendredi 30 janvier 2004
Statut
Membre
Dernière intervention
13 mai 2009
2
à mon avis, si la
temporisation n'est pas exacte c'est que t'as pas pris en compte les
temps d'execution des autres instructions avant et après le sleep.
Messages postés
6
Date d'inscription
vendredi 21 novembre 2003
Statut
Membre
Dernière intervention
28 octobre 2005

Je suis en multi thread avec des choix de cadence différents.
Pour regler un thread de cadence cadency , je fais :
Recuperation du temps tps1
execution du code
Recuperation du temps tps2
calcul de la difference delta
si delta < cadency
Recuperation du temps tps3
Sleep( cadency -delta)
Recuperation du temps tps4
et la surprise (tps4 - tps3) > cadency -delta

SIMBAD
Messages postés
17
Date d'inscription
mercredi 1 juin 2005
Statut
Membre
Dernière intervention
28 octobre 2005

Plutôt que sleep, wait.

synchronized (obj) {
...
obj.wait(timeout en ms, timeout plus fin en nanos);
...
}
Messages postés
6
Date d'inscription
vendredi 21 novembre 2003
Statut
Membre
Dernière intervention
28 octobre 2005

meyfab:
Est ce que tu aurais un petit exemple qui utilise la wait ?
Merci

SIMBAD
Messages postés
17
Date d'inscription
mercredi 1 juin 2005
Statut
Membre
Dernière intervention
28 octobre 2005

J'en ai pas en tête...

Essais http://www.concentric.net/~Ttwang/tech/rwlock.htm

Et regardes http://jdj.sys-con.com/read/35929.htm


Par contre, il y a deux types de machines virtuelles : Native Thread et Green Thread.

Native => C'est l'OS qui gère les threads.

Green => C'est une implémentation interne à la JVM qui gère les threads.



Préférer, dans la plupart des cas, une native thread.

De plus, ça reste de la gestion de Thread, avec donc des temps d'exec de processus et de gestion.

Reste après la commutation de contexte.

Donc ton temps d'"assoupissement" n'est que approximatif, même si avec
les machines actuelles et en l'absence de surcharge CPU, ces temps
devraient rester négligeables.
Messages postés
6
Date d'inscription
vendredi 21 novembre 2003
Statut
Membre
Dernière intervention
28 octobre 2005

J'ai teste cela ::
Object obj = new Object();
double dtsA = System.currentTimeMillis();
try{
synchronized (obj){
obj.wait(10);
}
}catch (InterruptedException ex1) {
}
double dtsAB = System.currentTimeMillis();
double deltaa = dtsAB-dtsA;


System.out.println(" "+deltaa);

Ca marche pas
Je continue a explorer

SIMBAD