pb avec un sleep

pb avec un sleep - Java - Programmation

Marsh Posté le 28-10-2005 à 08:20:43    

Bonjour
Je cherche a cadencer plusieurs threads avec un cadence peu eleve, mais j'ai un probleme de sleep.
Je recherche un sleep tres precis.
exemple :
Un thread à 10 ms, j'ai l'exécution de la fonction qui met 3 ms, donc je fais un sleep de 7ms, mais le
sleep met reellement 15 ms :(
 


---------------
"Placez votre main sur un poele une minute et ça vous semble durer une heure. Asseyez vous aupres d'une jolie fille une heure et ça vous semble durer une minute. C'est ça la relativite." (Albert Einstein / 1879-1955)
Reply

Marsh Posté le 28-10-2005 à 08:20:43   

Reply

Marsh Posté le 28-10-2005 à 12:09:34    

Tu es de toute façon limité à la granularité maximale de l'horloge ton OS.
 
Je doute que Windows XP puisse atteindre une précision à la milliseconde. A vérifier sur un forum Microsoft.

Reply

Marsh Posté le 28-10-2005 à 13:59:06    

un Sleep précis sur un OS non temps réel n'est pas possible. Faire un sleep de 10ms te garantit une pause qui fera au minimum 10ms. De plus, comme l'a dit jyles, il faut que l'OS sache gérer une granularité aussi faible.
 
Si tu veux des temps précis, il faut passer par une gestion d'horloge.

Reply

Marsh Posté le 28-10-2005 à 14:31:50    

Comment tu passes par la gestion de l'horloge ?


---------------
"Placez votre main sur un poele une minute et ça vous semble durer une heure. Asseyez vous aupres d'une jolie fille une heure et ça vous semble durer une minute. C'est ça la relativite." (Albert Einstein / 1879-1955)
Reply

Marsh Posté le 28-10-2005 à 14:38:54    

dans java.lang, tu as les Timer et les TimerTask.
 
Mais vu les granularités que tu veux, je doute que ça marche. Quel est l'intéret d'une granularité aussi faible?????
 

Reply

Marsh Posté le 28-10-2005 à 15:36:45    

J'ai des objets qui se deplacent à 1500m/s selon une certaine loi propre aux objets et à leur environnement, et je dois les positionner en temps réel le plus precisement pour detecter des collisions.
2ms= 3m c'est beaucoup, car la collision se fait sur des objets qui font entre 1 et 10 m.


---------------
"Placez votre main sur un poele une minute et ça vous semble durer une heure. Asseyez vous aupres d'une jolie fille une heure et ça vous semble durer une minute. C'est ça la relativite." (Albert Einstein / 1879-1955)
Reply

Marsh Posté le 28-10-2005 à 15:45:20    

Ok, mais je vois pas trop l'utilité su sleep là.

Reply

Marsh Posté le 28-10-2005 à 16:08:30    

Pourquoi aurais-tu besoin de temps réel RÉEL ? Une simulation ne ferait pas l'affaire ?

Reply

Marsh Posté le 28-10-2005 à 16:16:15    

le sleep c'est pour éviter d'avoir les bonbons directement dans le pantalon :o


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 28-10-2005 à 17:14:23    

JYLES ->
Une simulation temps reel -> oui, car je suis connecté en temps réels à des equipements.
 
LOKI ->
Le Sleep permet de laisser la main aux autres processus qui tournent en même temps.


---------------
"Placez votre main sur un poele une minute et ça vous semble durer une heure. Asseyez vous aupres d'une jolie fille une heure et ça vous semble durer une minute. C'est ça la relativite." (Albert Einstein / 1879-1955)
Reply

Marsh Posté le 28-10-2005 à 17:14:23   

Reply

Marsh Posté le 28-10-2005 à 17:17:26    

pdufranc a écrit :

JYLES ->
Une simulation temps reel -> oui, car je suis connecté en temps réels à des equipements.
 
LOKI ->
Le Sleep permet de laisser la main aux autres processus qui tournent en même temps.


1) [:pingouino]
 
2) [:pingouino]²
 
 
Pour le premier point : tu es déjà dans le mur, arrête le projet tout de suite.
 
pour le second : c'est yield et pas sleep qu'on utilise.


---------------
trainoo.com, c'est fini
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed