El % de CPU no se corresponde con la carga sino con las veces "que descansa".
Prueba compilar este programa:
Código C++:
Ver originalint main()
{
int Cosita = 0;
while (true)
{
Cosita++;
Cosita--;
}
return 0;
}
No hace nada, pero consume el 100% de la CPU (en procesadores mononúcleo). Como puedes ver, no está haciendo nada del otro mundo. Incluso podríamos dejarlo así:
Código C++:
Ver originalint main()
{
while (true);
return 0;
}
La razón que use el 100% de la CPU es que este programa no deja descansar al procesador.
En condiciones normales el procesador siempre está descansando porque está esperando una acción (por ejemplo, ya sea a que el usuario le introduzca datos por teclado/ratón o porque está cargando archivos del disco duro). Muy a menudo también se "induce" a que el procesador descanse (con alguna función tipo sleep).
En resumen, el uso de la CPU depende de:
- Los descansos que tenga el procesador en el programa.
- Los núcleos que tenga el procesador (cada núcleo puede lanzar un hilo de ejecución, por tanto si saturas un núcleo te quedan los demás). Como tienes un procesador mononúcleo el porcentaje se dispara.