2009-04-09 3 views
0

Je ne comprends pas pourquoi les threads doivent "dormir" s'il n'y a pas d'événement dans la boucle d'exécution de l'application. Est-ce que cela économise de l'énergie, ou de la mémoire, ou quoi d'autre?Pourquoi la boucle d'exécution principale met-elle un thread d'exécution en veille s'il n'y a aucun événement?

Lorsqu'un événement provient d'une entrée source, il réactive ce thread pour gérer cet événement. Après cela, il serait de nouveau en veille, dans le cas où il n'y a plus d'événement dans la file d'attente en attente d'être traité.

Est-ce que quelqu'un a une bonne explication pour ce problème de sommeil?

Répondre

2

Ce n'est pas un problème. C'est une bonne chose. Quoi d'autre le fil principal ferait-il? Il ne devrait pas traiter les tâches de longue durée - cela réduirait le caractère "brusque" de l'interface utilisateur lorsqu'un événement de l'interface utilisateur intervient.

Il ne devrait pas y avoir de bouclage avant qu'un événement ne survienne - cela prendrait temps de processeur qui peut autrement être raisonnablement utilisé par d'autres applications.

Dormir (ou plutôt attendre) est exactement ce que vous voulez faire - donc il peut se réveiller dès qu'il a un travail utile à faire, mais n'a pas d'impact sur le système.

2

Un thread dormant permet à un planificateur de système d'exploitation (un sous-système qui alloue le temps CPU aux threads) d'exécuter d'autres threads.

2

Comme d'autres l'ont dit, mettre le thread en veille permet à d'autres threads d'être exécutés. J'ajouterai que puisque vous faites probablement référence à l'iPhone (basé sur la plupart de vos autres questions), il sera également utile même si aucun autre thread ne doit fonctionner car la consommation d'énergie du processeur diminuera quand il est inactif .

Questions connexes