¿Cuál es la diferencia entre un proceso y un hilo?
¿Cuál es la diferencia técnica entre un proceso y un hilo?
Tengo la sensación de que una palabra como 'proceso' está sobreutilizada y que también hay hilos de hardware y de software. ¿Qué hay de los procesos ligeros en lenguajes como Erlang? ¿Hay alguna razón definitiva para utilizar un término sobre el otro?
1500
3
Tanto los procesos como los hilos son secuencias de ejecución independientes. La diferencia típica es que los hilos (del mismo proceso) se ejecutan en un espacio de memoria compartido, mientras que los procesos se ejecutan en espacios de memoria separados.
No estoy seguro de a qué hilos "hardware" vs. "software" te refieres. Los hilos son una característica del entorno operativo, más que una característica de la CPU (aunque la CPU suele tener operaciones que hacen que los hilos sean eficientes).
Erlang utiliza el término "proceso" porque no expone un modelo de multiprogramación de memoria compartida. Llamarlos "hilos" implicaría que tienen memoria compartida.
Robado de aquí.
Tanto los hilos como los procesos son unidades atómicas de asignación de recursos del SO (es decir, hay un modelo de concurrencia que describe cómo se divide el tiempo de CPU entre ellos, y el modelo de propiedad de otros recursos del SO). Hay una diferencia en:
Greg Hewgill arriba tenía razón sobre el significado de Erlang de la palabra "proceso", y aquí hay una discusión de por qué Erlang podría hacer procesos ligeros.