2010-02-10 10 views
3

J'ai pensé aujourd'hui sur NodeJS et attitude envers le blocage, il m'a fait penser, si un bloc de code est purement non bloquant, par exemple calculer une alogirthm réelle à long et les variables sont présentes dans la pile etc .. si cela pousser un seul noyau non hyperthreaded à la CPU comme le Gestionnaire des tâches de Windows définit à 100% car elle vise à compléter cette tâche le plus rapidement possible? Dites que c'est généralement un calcul qui peut prendre quelques minutes.Si une CPU push de code non-bloquant à 100%

+0

Les réponses encourageantes, la prochaine fois qu'un administrateur sys me dit que mon application non bloquante utilise 100% de CPU, je vais le prendre comme un complément ... –

+0

La ligne tueur de lignes occupées dans Windows :: MsgWaitForMultipleObjects (0, NULL, FALSE, 1, NULL); – Ulterior

Répondre

0

Tant que la CPU est "donnée" à d'autres processus quand il y en a qui en ont besoin pour faire leurs calculs, je suppose que c'est OK: pourquoi ne pas utiliser le CPU s'il y a du travail?

5

Oui, il se doit. L'algorithme devrait fonctionner aussi vite que possible. C'est le travail du système d'exploitation de planifier le temps à d'autres processus si nécessaire.

1

Si votre calcul non bloquant le code intensif ne pas utiliser 100% de la CPU, alors vous gaspillez cycles dans le temps d'inactivité. Cela m'énerve toujours de voir la tâche inactive en utilisant 99% du CPU.

0

Comme RAM peut être paginée sur le disque, toutes les applications bloquent potentiellement. Cela se produirait si l'algorithme utilise plus de RAM que disponible sur le système. En conséquence, il ne va pas atteindre 100%.