Programación Concurrente
A continuación se describe seis ejercicios sencillos que abordan los temas de introducción a la programación concurrente, conceptos de programación concurrente, arquitecturas paralelas y distribuidas, así como algoritmos paralelos y distribuidos.
- Diseña un programa en el que dos hilos impriman mensajes alternativamente en la consola. Utiliza la biblioteca
threading
en Python o el equivalente en el lenguaje que prefieras. - Implementa un programa que simule una carrera entre tres hilos. Cada hilo representa un corredor y avanza en pasos aleatorios. Imprime el progreso de cada corredor en la consola y determina el ganador cuando uno de ellos llegue a la meta.
- Investiga sobre arquitecturas paralelas y distribuidas. Diseña un pequeño esquema que ilustre las diferencias clave entre ambas arquitecturas. Puedes utilizar diagramas simples para representar los componentes y la comunicación.
- Crea un algoritmo paralelo simple para la suma de elementos en una lista. Divide la lista en subconjuntos y realiza la suma paralelamente en varios hilos. Asegúrate de gestionar adecuadamente la sincronización.
- Diseña un algoritmo distribuido básico para la coordinación entre nodos en una red. Puedes utilizar un modelo simple de mensajes para que los nodos se comuniquen y tomen decisiones colectivas.
- Modifica un programa existente para hacerlo más eficiente utilizando programación concurrente. Por ejemplo, si tienes un programa que procesa una lista de archivos, divide el trabajo entre varios hilos para mejorar el rendimiento.