El caso de macOS
La plataforma más estricta con el hilo principal, y por eso la más útil para desarrollar. Qué comprueba, cómo se leen sus avisos, y las tres cosas suyas que no existen en las otras dos.
Qué comprueba
El conjunto de herramientas gráficas de Apple valida activamente que las llamadas de interfaz vengan del hilo principal, y cuando no lo hacen lo dice. Los mensajes tienen una forma reconocible: mencionan el hilo principal explícitamente y a veces piden que la llamada se haga desde ahí.
En una compilación de depuración esos avisos aparecen en la salida del core —la que ves en el terminal con el comando de desarrollo—. En producción pueden ser menos visibles, así que la detección ocurre mientras desarrollas, que es donde sirve.
De ahí la recomendación práctica: si el equipo desarrolla en varias plataformas, que al menos una persona lo haga en macOS. Los errores de hilo que ahí se cazan en el momento, en Linux se manifiestan como fallos aleatorios semanas después.
El bucle de ejecución
macOS organiza el hilo principal alrededor de un bucle de ejecución que atiende fuentes de eventos: la entrada del usuario, los temporizadores, los mensajes entre procesos. Ese bucle es el que ejecuta el bloque que encolas con la función del nivel 24.2.
La consecuencia práctica es una que sorprende: el bucle tiene modos. Mientras el usuario mantiene pulsado el ratón redimensionando una ventana o navegando un menú, el bucle entra en un modo distinto y puede no atender lo que hay encolado. El efecto es que un bloque encolado justo cuando el usuario está arrastrando puede tardar en ejecutarse mucho más de lo esperado.
No es un fallo y conviene conocerlo, porque explica un comportamiento raro: una actualización de interfaz que se aplica tarde solo cuando el usuario está interactuando. Y es una razón más para el aviso del nivel 24.2: el trabajo se hace fuera y el bloque encolado solo aplica el resultado.
Las tres particularidades del ciclo de vida
Las tres tienen algo en común: son diferencias de expectativa del usuario, no de capacidad. Una aplicación que las ignora funciona y se siente ajena al sistema, que es justo lo que el nivel 12.3 quería evitar por otra vía.
Y una nota de depuración
Cuando algo del hilo principal se comporta raro en macOS y no está claro qué, hay una herramienta que ayuda: el depurador del sistema puede parar el proceso y enseñar la pila de todos los hilos. Mirar qué está haciendo el hilo principal en el momento de la congelación identifica los seis casos del nivel 24.3 sin adivinar.
No hace falta saber usarlo a fondo: basta con saber que existe y que la pregunta «¿qué está haciendo el hilo principal ahora mismo?» tiene una respuesta exacta y no una hipótesis.