2010-05-17 10 views

Respuesta

6

Los bucles infinitos no son diferentes de cualquier otro código en ejecución. La computadora no sabe que el ciclo infinito no es un cálculo complicado que solo requiere muchas iteraciones.

A menos que el bucle infinito contenga un código que llama a algunas funciones del sistema que devuelven tiempo al sistema operativo, el sistema operativo lo trata como un proceso que está trabajando activamente en algo y le da tiempo para ejecutarlo. Si no se están ejecutando otros procesos, consumirá el 100% de la CPU (en un solo sistema central).

+1

en realidad moderna de propósito general O/S, cualquier código en su sano juicio va a entrar en un estado de espera interrumpible que se detiene el núcleo de la ejecución de cualquier cosa en ese hilo hasta que se necesita. –

+0

De acuerdo, pero mi comparación fue con un cálculo intenso, como los realizados para la investigación académica. – NilObject

18

La CPU no puede hacer nada más mientras está ejecutando ese ciclo (que nunca termina). Incluso si está utilizando un sistema multitarea preventivo (de modo que el bucle infinito solo obstruirá para siempre su propio proceso o subproceso), el bucle "comerá" su porción de tiempo cada vez que el planificador preventivo del sistema operativo le entregue el CPU para la siguiente porción: sin hacer nada, pero consumiendo el tiempo de CPU de una rebanada cada vez, por lo que se pierde mucha CPU de todos los otros hilos que podrían hacer un trabajo útil.

+1

Esta respuesta, aunque puede ser correcta, parece demasiado difícil y, por lo tanto, no es muy útil para las personas que hacen este tipo de preguntas. Además del amplio uso de términos técnicos, la segunda oración, que es la mayor parte del párrafo, es particularmente demasiado larga para analizar. – sawa

6

Los bucles infinitos en sí mismos no son un problema en absoluto. La mayoría de las aplicaciones que interactúan con un usuario son bucles infinitos. Esperan repetidamente al usuario, actúan sobre él y vuelven a realizar el ciclo. El sistema operativo en sí es un bucle infinito. Se dice que estos tipos de ciclo infinito son "productivos" porque, a pesar de repetir algo de forma indefinida, generan periódicamente algo útil para el usuario.

Supongo que su preocupación es con bucles infinitos improductivos. Pero está claro por qué estos son un problema. Tienen todas las desventajas de los bucles productivos (consumen potencia, usan tiempo de CPU, etc.) sin ninguna de las ventajas, es decir. ellos no producen nada útil.

+1

Aunque su primer párrafo es informativo y útil, el segundo párrafo es circular. La pregunta es, ¿por qué los bucles infinitos del tipo no intencionado "consumen energía, usan tiempo de CPU, etc."? – sawa

Cuestiones relacionadas