solo seguro quitar queda progreso pro pero modo macbook mac iniciar imac enciende encender cargando carga boton barra aviso arranque arranca apaga osx sleep process-management

osx - seguro - ¿Qué sucede con mi aplicación cuando mi Mac se va a dormir?



mi imac se apaga al iniciar (5)

Creo que simplemente suspenderá todas las aplicaciones donde sea que estén.

Recuerde, esto sucede todo el tiempo de todos modos. Las aplicaciones se suspenden constantemente y se reanudan debido al cambio de contexto. Entonces, en realidad, el reloj podría saltar entre dos instrucciones en su aplicación, aunque por lo general no de manera notable o significativa.

Si el sistema operativo esperó a que la aplicación regresara a algún ciclo principal, podría encontrarse con situaciones en las que las aplicaciones hacen que la suspensión se cuelgue. Si están haciendo un gran trabajo y no regresan al despachador de bucle de ejecución evitarían que la máquina se quede dormida. Eso no sería muy bueno. :)

Cuando Mac OS X se queda dormido, al cerrar una computadora portátil o al seleccionar "Suspender" en el menú de Apple, ¿cómo suspende un proceso de ejecución?

Supongo que los procesos sin ventana simplemente se suspenden en un punto arbitrario de ejecución. ¿Es eso también cierto para las aplicaciones de Cocoa, o espera el sistema operativo hasta que el control regrese al despachador de bucle de ejecución y se vaya a dormir en una ubicación "conocida"? ¿Hace algo de sistema operativo moderno, o suele ser lo suficientemente seguro como para simplemente suspender una aplicación sin importar lo que está haciendo?

Tengo curiosidad, porque permitir que el sueño ocurra en cualquier momento significa, desde la perspectiva de la aplicación, que el reloj del sistema podría saltar repentinamente en una cantidad significativa. Esa es una posibilidad que normalmente no considero mientras estoy codificando.


Y si configura la hora, también parece avanzar hacia los programas en ejecución. Nada especial tampoco.


Depende de tu aplicación.
Si está interactuando con sistemas externos (piense en redes o haciendo algo por usb / firewire, etc.) entonces podría verse afectado. Una aplicación que se ejecuta en OSX se ejecuta durante un tiempo limitado (10 ms máximo), después de lo cual es interrumpida por el kernel, que programa un nuevo proceso desde la cola de proceso para ejecutarse en la CPU. Esto es transparente para la aplicación, que "piensa" que se ejecuta todo el tiempo en la CPU. Por lo tanto, una transición al sueño no es diferente, aparte del tiempo de saltar hacia adelante.
Si necesita saber que hubo una transición al modo de suspensión, consulte esta nota técnica que detalla cómo recibir notificaciones sobre el cambio de estado: registrar y anular el registro para las notificaciones de suspensión y activación


Mira este artículo de Wikipedia. Cavver está en lo cierto al afirmar que cosas como las conexiones de red pueden caducar y, por lo tanto, esos servicios pueden verse interrumpidos.


Su aplicación se interrumpe exactamente donde está ese momento si la CPU actualmente está ejecutando el código de su aplicación. Su aplicación obtiene constantemente el tiempo de ejecución del planificador de tareas, que decide qué aplicación obtiene el tiempo de CPU, en qué núcleo y durante cuánto tiempo. Una vez que el sistema realmente se queda dormido, el programador simplemente no le da tiempo a su aplicación por más tiempo, por lo tanto, detendrá la ejecución donde sea que esté en ese momento, lo que puede suceder prácticamente en todas partes. Sin embargo, el kernel debe estar limpio. Eso significa que si acaba de hacer una llamada al kernel (muchas funciones de libC lo hacen) y esta llamada no está en un punto seguro (por ejemplo, dormir, esperar que una condición se convierta en verdad, etc.) o mantener bloqueos críticos del kernel (ej. embudos), el núcleo puede suspender la suspensión hasta que esta llamada regrese al espacio del usuario o la ejecución llegue a tal punto seguro antes de que finalmente cancele su aplicación del programador de tareas.

Puede abrir un puerto kernel y registrarse para eventos de suspensión / activación. En ese caso, su aplicación recibirá un evento cuando el sistema quiera irse a dormir. Tienes varias posibilidades. Una es responder a ella, que el sistema puede progresar. Otro es suspender el sueño; sin embargo, Apple dice que ciertos eventos pueden suspenderse a lo sumo 30 segundos, luego de eso, el sistema continuará, independientemente de si a su aplicación le gusta o no. Y finalmente, puedes cancelarlo; aunque no todos los eventos pueden ser cancelados. Si el sistema ya decidió que irá a dormir, solo puede suspenderlo por un máximo de 30 segundos o permitirlo de inmediato, no puede cancelarlo. Sin embargo, también puede escuchar un evento, donde el sistema le pregunta a las aplicaciones, si está bien ir a dormir ahora y allí puede responder "no", lo que hace que se cancele un sueño.

La diferencia entre "¿está bien dormir" y "estoy pensando en ir a dormir" es: la primera se envía si se aplica la configuración de ahorro de energía, es decir, si el usuario no ha movido el mouse ni ha escrito nada para el tiempo configurado allí. En ese caso, el sistema solo preguntará, si el sueño está bien. Una aplicación como el reproductor de DVD de Apple dirá "no" porque lo más probable es que el usuario mire un DVD y, por lo tanto, no interactúe con la computadora, aún no hay motivo para irse a dormir. OTOH, si el usuario cierra su Mac Book, no se le preguntan las aplicaciones, el sistema se dormirá con seguridad y solo informa a las aplicaciones, que ahora tienen hasta 30 segundos para reaccionar.

Los eventos de despertar también pueden ser muy interesantes de atrapar. Por ejemplo, si su sistema se activa, es posible que no pueda acceder a los archivos abiertos (se desenchufó una unidad externa) o que los conectores de red ya no funcionen (la red ha cambiado). Por lo tanto, puede volver a iniciar ciertas partes de la aplicación antes de usarlas y ejecutar errores que son más o menos esperados.

La página de Apple sobre la captura de estos eventos.