Programación concurrente o Multihilo
Un programa concurrente es un
programa que tiene mas de una linea logica de ejecucion, es decir, es un
programa que parece que varias partes del mismo se ejecutan simultaneamente. Un
ejemplo de de esto es un programa que realice
determinada funcion y, simultaneamente, exponga datos en la pantalla. Un
programa concurrente puede correr en varios procesadores simultaneamente o no.
Esta importancia de la concurrencia es especialmente destacable en sistemas
operatives como Linux, que ademas de concurrentes, presentan unos mecanismos de
concurrencia estables.
El concepto fundamental de la
programacion concurrente es la nocion de proceso. El termino proceso fue
utilizado por primera vez por los diseñadores del sistema Multics en los años
60’s. Desde entonces, el termino proceso, utilizado a veces como sinonimo de
tarea, ha tenido muchas definiciones. A continuacion se presentan algunas:
Un programa en ejecucion.
- Una actividad asincrona
- El “espiritu animado” de un procedimiento
- El “centro de control” de un procedimiento en ejecucion
- Lo que se manifiesta por la existencia de un “bloque de control del proceso” en el sistema operativo
- La entidad a la que se asignan los procesadores
- La unidad “despachable”
Un programa multihilo contiene dos o más partes que se pueden ejecutar de manera concurrente o simultánea. A cada una de esas partes se les denomina hilo y cada uno de ellos define un camino de ejecución independiente. Se puede ver a la programación multihilo como una forma especializada de multitarea.
Originalmente, la programación con hilos fue explotada con el
fin de lograr que algunos programas resultaran más sencillos de escribir: si un
programa puede dividirse en varias tareas, suele ser más fácil programar el
algoritmo como tareas o hilos separados. Los programas que caen dentro de esta
categoría, típicamente son especializados y se encargan de múltiples tareas
independientes.
Frecuentemente, estos programas fueron escritos como procesos
separados que utilizaban herramientas de comunicación dependientes del sistema
operativo, tales como señales y espacios de memoria compartida para hacer la
comunicación entre los procesos, incrementando de esta forma la complejidad de
los sistemas.
La popularidad de los hilos se incrementó cuando las
interfaces gráficas se convirtieron en un estándar para computadoras de
escritorio, debido a que el sistema de hilos permitió al usuario percibir un
mejor desempeño de los programas. La introducción de hilos en estas plataformas
no hizo a los programas más rápidos, pero creó en el usuario una ilusión de
desempeño más rápido, quien ahora tenía un hilo dedicado para el servicio de
entrada o para la salida en pantalla.
Fuente: Yaqui
Paginas relacionadas: Literaturas y otras cuestiones morales, Ceo Developers, Geniality Software.
Nota: Si el material te ha servido de ayuda por favor comparte el post, necesitamos que aumente el numero de personas que conocen acerca de estos temas, estamos en la revolucion informatica y todos debemos poner un poco de nuestra parte, para que este movimiento nunca muera. Unidos por la informatica.
No hay comentarios:
Publicar un comentario
Si tienes alguna duda, escribenos.