¿Cómo funciona RunLoop los ciclos de la CPU?

He estado leyendo sobre RunLoops por unos días en la documentation de Apple y cosas de la búsqueda de Google. He entendido el concepto de RunLoops en gran medida, pero aún no obtuve respuesta a algunas preguntas básicas sobre RunLoops .

  1. ¿Cómo Runloop exactamente Runloop ? ¿Es algo así como el ciclo mientras se ejecuta en algún nivel del sistema?
  2. Si de hecho es algún tipo de bucle while en algún nivel del sistema, ¿cómo se diferencia del sondeo?

Por favor, dame algunos consejos para esto …

El punto completo acerca de un RunLoop (llamado de diversas maneras como Window Handler, main-loop, event-loop en otras plataforms) es que facilita una architecture controlada por events en la que una aplicación solo se ejecuta cuando hay algo que hacer, por ejemplo, responder a la interacción del usuario. Esto es lo opuesto al sondeo.

Fundamental para la architecture es una especie de queue de posts que un hilo puede bloquear hasta que un post esté disponible para su procesamiento. En los sistemas MacOSX e iOS, la queue es un port RPC Mach kernel . En Windows es una queue de IPC de kernel, y sistemas de X-Windows, un socket de dominio o networking Unix.

Los events se insertan en la queue por otros componentes del sistema, por ejemplo, un administrador de windows y otras aplicaciones. También es común que las aplicaciones se envíen posts desde otros subprocesss para poder realizar todo el procesamiento de la interfaz de usuario en el mismo subprocess.

El run-loop reside en el espacio de la aplicación y se ve así:

 while (!stop) { message = WaitForNextMessage(); DispatchMessage(message); } 

Por lo general, cualquier marco de interfaz de usuario que utilice proporciona un mecanismo para registrar un controller de events para determinados types de events.