67 votes

Quelle est la différence entre la méthode sleep() et la méthode yield() de multi-threading ?

En tant que thread en cours d'exécution alors qu'il rencontre l'appel sleep() le thread passe immédiatement en état de veille. Alors que pour yield() thread passe à l'état exécutable / état prêt.

107voto

Michael Borgwardt Points 181658

sleep() provoque l'arrêt définitif de l'exécution du thread pendant un laps de temps donné ; si aucun autre thread ou processus ne doit être exécuté, le processeur sera inactif (et entrera probablement en mode d'économie d'énergie).

yield() signifie essentiellement que le thread ne fait rien de particulièrement important et si d'autres threads ou processus doivent être exécutés, ils le devraient. Sinon, le thread actuel continuera à s'exécuter.

5voto

giorashc Points 8238

Sleep provoque la suspension du thread pendant x millisecondes tandis que yield suspend le thread et le déplace immédiatement vers la file d'attente prête (la file d'attente que le CPU utilise pour exécuter les threads).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X