Next: Repaso: programación secuencial
Up: Introducción
Previous: Implementación
Entre las ventajas de la programación concurrente se suelen encontrar
- mejor rendimiento, es decir, se espera
- que el programa se ejecute más rápido
- que el programa use los recursos de mejor manera, p.e., no
deje recursos disponibles sin usar durante mucho tiempo
- que el programa se desarrolle más fácilmente
- que el programa refleje el modelo del problema real
Sin embargo, también existen desventajas:
- se pierde tiempo en sincronizar procesos y comunicar datos entre
ellos
- en el caso de multiplexación de procesos/hilos se pierde tiempo
en salvar información sobre el contexto
- los procesos pueden esperar a acciones de otros procesos, eso puede
resultar en un bloqueo (``deadlock'') de algún proceso, en el
peor caso se daría como resultado que no se produjera ningún progreso en
el programa
- hay que buscar estrategias eficientes para distribuir el trabajo entre
los diferentes procesadores
(``efficient load balancing'')
- hay que buscar estrategias eficientes para distribuir los datos entre
los diferentes procesadores
(``efficient data distribution'')
- en muchas situaciones hay que buscar un compromiso entre
tiempo de ejecución y uso de recursos
- el desarrollo de programas concurrentes es mucho más complejo
que el desarrollo de programas secuenciales
- la depuración de programas concurrentes es muy difícil,
(por eso vale la pena de mantener una estricta disciplina en el
desarrollo de programas concurrentes y basar la implementación
en patrones de diseño bien estudiados)
Next: Repaso: programación secuencial
Up: Introducción
Previous: Implementación
© 2002, Dr. Arno Formella, Universidad de Vigo, Departamento de Informática