Au pro du thread, yield() VS Sleep()

Au pro du thread, yield() VS Sleep() - Java - Programmation

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

---------------

Reply

Marsh Posté le 11-11-2002 à 14:12:48   

Reply

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


---------------

Reply

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)

Reply

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.

Reply

Sujets relatifs:

Leave a Replay

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