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.
- ¿Qué nuevas características de iOS 8 hacen que no esté disponible para el iPhone 4? ¿Por qué iOS 7 hace que el iPhone 4 sea lento?
- ¿Qué piensan los desarrolladores y empresarios de aplicaciones sobre el nuevo programa de televisión de Apple, Planet of the Apps?
- ¿Es posible que un principiante absoluto cree una aplicación para iPhone todos los días durante 30 días seguidos? (suponiendo que las aplicaciones tengan una funcionalidad simple)
- ¿Cuáles son las aplicaciones imprescindibles para iOS?
- ¿Cómo se compara Chromebook con productos similares de Apple en términos de diseño de software intuitivo?