Au pro du thread, yield() VS Sleep() - Java - Programmation
Marsh Posté le 11-11-2002 à 14:42:30
Quelle est la différence exacte entre yield() et sleep(X) si ce n'est que dans sleep(X), une durée x ms minimum de pause est assurée?
Merci
Marsh Posté le 11-11-2002 à 22:58:04
yield : tu rends la main.
sleep : tu mets le thread en pause.
=> yield c'est en gros un sleep(0)
Marsh Posté le 12-11-2002 à 11:28:52
Le mieux, c'est sans doute de baisser la priorité des threads qui ont une grosse activité, et qu'ils fassent des yield() régulièrement. Comme cela, le programme principal ne sera pas bloqué, et s'il n'a rien à faire, les threads ne seront pas moins performants.
Marsh Posté le 11-11-2002 à 14:12:48
Hello
J'ai un petit problème que j'aimerais résoudre de la manière la plus propre possible.
J'ai 3 treads (mais le problème reste identique avec 2),thread:
- A
- B
- C
Le thread est composé d'une boucle qui dans certaines circonstances, laisse la main (yield). Si B et C ont qqch à faire, alors c'est ok. Mais si ce n'est pas le cas, cela craint alors l'équivalent d'une boucle infini, qui charge le cpu à 100% et cela cause des problèmes pour d'autres fonctions (je vous épargne les détails).
Je cherche donc à savoir s'il y a une manière élégante de résoudre ce problème SANS mettre un sleep(50) (qui fait retomber la charge CPU à 10%). Y-a-t'il un moyen de faire le sleep que si le passage de la main est trop court.
D'avance merci
A+
Message édité par korben le 11-11-2002 à 14:42:53
---------------