En pocas palabras, ¿qué son ‘hilos’ y qué significa ser ‘seguro’ desde una perspectiva de iOS?

Un hilo es un hilo, independientemente de la plataforma para la que se esté desarrollando. Para comprender qué es un hilo, es importante comprender qué es un proceso primero y qué es el cambio de contexto. Hablaré en términos de Unix aquí. No estoy completamente seguro de si lo mismo se aplica exactamente a Windows.

Proceso
Wikipedia define un proceso como “una instancia de un programa informático que se está ejecutando”. Típicamente, un proceso contiene un código de programa, su propio espacio de memoria, pila y montón. Cada proceso tiene un estado (en ejecución, inactivo, bloqueado, etc.) y el núcleo es responsable de administrar el estado de un proceso. El cambio entre un proceso a otro ocurre durante un cambio de contexto. Un cambio de contexto guarda el estado del proceso por el núcleo, y el núcleo restaura un proceso diferente que comenzará a ejecutarse mientras el otro proceso está inactivo o bloqueado. El cambio de contexto permite el multiprocesamiento, por lo que el cambio de contexto ocurre bastante rápido y el usuario no podrá notar que los procesos se ejecutan por separado. Sin embargo, el cambio de contexto entre procesos es bastante costoso y no es tan rápido entre hilos (llegar a esto ahora), y compartir memoria entre procesos separados es muy difícil. No se puede hacer fácilmente intercambiando punteros. Lo que nos lleva a:

Trapos
Un subproceso es un flujo de control lógico diferente, generalmente un subconjunto de un proceso que tiene una pila separada pero que puede compartir fácilmente la memoria entre otros subprocesos. El cambio de contexto entre hilos es más barato que el cambio de contexto entre procesos. Por lo tanto, el subprocesamiento múltiple (el cambio rápido de contexto entre subprocesos) aparecerá como realmente asíncrono en un núcleo para un usuario. El verdadero poder del subprocesamiento múltiple reside cuando se utiliza el modelo 1-1 (1 subproceso de nivel de usuario asignado a un subproceso de nivel de kernel). En un sistema multinúcleo, cada subproceso del núcleo puede ejecutarse en un núcleo separado que explota la concurrencia verdadera. Puedo hablar de esto para siempre, así que ahora que entiendes los conceptos básicos, te animo a que leas más en hilos, y qué es exactamente un hilo a nivel de usuario y un hilo a nivel de kernel.