Ver Mensaje Individual
  #10 (permalink)  
Antiguo 23/01/2015, 10:13
Avatar de HackmanC
HackmanC
 
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: Mantener el programa siempre en ejecucion

Hola,

Cita:
Iniciado por lareto Ver Mensaje
... Y no sé si es lo mejor que puede hacerse, pero seguramente no es lo peor; al menos yo puedo pensar en cosas peores sin mucho esfuerzo.
Ciertamente, también por eso escribí "...no se a que te refieres exactamente con while(true)...", es decir, allí cambia la cosa, pasaste el GetMessage dentro del ciclo.

Cita:
Iniciado por razpeitia Ver Mensaje
Claro que no, pero la suma de porcentaje de CPU, si daría 100% lo cual es correcto.
Porque crees que existe un proceso inactivo del sistema ocupando tanto cpu.
Exactamente, básicamente era una aclaración sobre lo que habías escrito.


Resumiendo, es cierto que un ciclo infinito, pero lo que sucede dentro de ese ciclo infinito es lo importante. A lo que me refería principalmente, es que según lo que comenta shekel, su proceso consume 99% de CPU.

Es decir, lo que está haciendo es seguramente,

Código C:
Ver original
  1. void IntentarLeerDispositivo() {
  2.   // intentar leer si el dispositivo está conectado.
  3. }
  4.  
  5. while(true) {
  6.   IntentarLeerDispositivo();
  7. }
Eso es pésimo para el sistema operativo, si fuera una aplicación de 16 bits, en Windows 3.1 votaría completamente el OS, posiblemente tenías que apagar la PC con reset. Ahora, con 32 y 64 bits y múltiples Cores, ya no es tan visible el problema, te da tiempo de entrar al Task Manager y detener el proceso.

Ahora, lo que hace GetMessage() es bastante complejo, normalmente dentro de un ciclo infinito, pero no es un simple while(true) común y silvestre, a eso me refería básicamente, sin el GetMessage de por medio es lo peor que puedes hacer.

Saludos,