que está escuchando dos nociones diferentes de la tarea. El primero es la noción de un trabajo, y el segundo es la noción de un proceso.
Hace mucho tiempo (en términos informáticos), no había ningún hilo. Cada instancia en ejecución de un programa se llamaba proceso, ya que simplemente se realizaba un paso tras otro después de otro hasta que salía. Esto coincide con la idea intuitiva de un proceso como una serie de pasos, como el de una línea de ensamblaje de fábrica. El sistema operativo maneja la abstracción del proceso.
Luego, los desarrolladores comenzaron a agregar varias líneas de ensamblaje a las fábricas. Ahora un programa podría hacer más de una cosa a la vez, y ya sea una biblioteca o (más comúnmente hoy) el sistema operativo gestionaría la programación de los pasos dentro de cada hilo. Un hilo es un proceso liviano, pero un hilo pertenece a un proceso y todos los hilos en un proceso comparten memoria. Por otro lado, los procesos múltiples no pueden meterse con la memoria de los demás. Por lo tanto, los múltiples subprocesos de su servidor web pueden acceder a la misma información sobre la conexión, pero Word no puede acceder a las estructuras de datos en memoria de Excel porque Word y Excel se ejecutan como procesos separados. La idea de un proceso como una serie de pasos en realidad no coincide con el modelo de un proceso con hilos, por lo que algunas personas comenzaron a llamar "tarea de abstracción conocida anteriormente como proceso". Esta es la segunda definición de tarea que viste en la publicación del blog. Tenga en cuenta que muchas personas todavía usan el proceso de palabras para referirse a esto.
Bueno, a medida que los hilos se volvieron más comunes, los desarrolladores agregaron aún más abstracciones sobre ellos para hacerlos más fáciles de usar. Esto condujo al aumento del grupo de subprocesos, que es un "grupo" de subprocesos administrados por la biblioteca. Le pasa un trabajo a la biblioteca y la biblioteca selecciona un hilo y ejecuta el trabajo en ese hilo. El .NET Framework tiene una implementación de grupo de subprocesos y la primera vez que oyó hablar de una "tarea", la documentación realmente significaba un trabajo que pasa al grupo de subprocesos.
Por lo tanto, en cierto sentido, tanto la documentación como la publicación del blog son correctas. La sobrecarga del término tarea es la desafortunada fuente de confusión.
¿Cuál es la diferencia entre un * trabajo * y un * trabajador *? Un trabajador * hace * un trabajo; un trabajador no es * un trabajo *. Algunos trabajos son realizados por un solo trabajador; algunos trabajos se dividen en trabajos más pequeños, todos realizados por muchos trabajadores que trabajan juntos. Lo mismo con tareas e hilos; una tarea no es * un tipo de hilo *; una tarea es un trabajo, y un hilo es un trabajador que hace el trabajo. –
Otra analogía que he escuchado es que los procesadores son controladores, los subprocesos son camiones y las tareas son cargas que hay que transportar. Un controlador (procesador) solo puede operar un camión (hilo) a la vez, y un camión (hilo) solo puede transportar una carga (tarea) a la vez. Puede comprar tantos camiones como desee, pero cuanto más tiempo los conductores toman el cambio entre camiones menos tiempo pasan manejando.Las cargas pueden acumularse en un almacén esperando el transporte, y el almacén puede priorizarlas y asignarlas a camiones según las reglas que tengan sentido. –