Referencias Bibliográficas: [Williams, 2019,Stroustrup, 2013]
Temas
- Seguridad (safety) y vivacidad (liveness):
- Condiciones de carrera (race conditions)
- Dependencias/precondiciones
- Modelos de fallos (fault models)
- Terminación
- Modelos de programación:
- Modelo de actores (actor models)
- Modelos procedurales y reactivos
- Modelos de programación síncrona/asíncrona
- Paralelismo de datos (data parallelism)
- Comunicación y coordinación:
- Mutexes
- Paso de mensajes (message-passing)
- Memoria compartida (shared memory)
- Cobegin-coend
- Monitores
- Canales (channels)
- Hilos (threads)
- Guardas (guards)
- std::thread y gestión de hilos.
- Mutexes, candados y variables de condición.
- Operaciones atómicas y programación sin bloqueo.
- std::async y futures.
- Patrones de diseño seguros para hilos.
- Carreras de datos y prevención de interbloqueos.
Aprendizaje esperado (Learning Outcomes)
- Implementar programas concurrentes correctos usando múltiples modelos de programación, como memoria compartida, actores, futuros, construcciones de sincronización y primitivas de paralelismo de datos
[Usar]
- Usar construcciones de sincronización como métodos monitorizados/sincronizados en un programa simple
[Usar]
- Usar un modelo de paso de mensajes para analizar un protocolo de comunicación
[Evaluar]
- Implementar estructuras de datos sin bloqueo usando
operaciones atómicas [Usar].
- Analizar la seguridad en hilos de algoritmos
concurrentes [Evaluar].
Generado por Ernesto Cuadros-Vargas , Sociedad Peruana de Computación-Peru, basado en el modelo de la Computing Curricula de IEEE-CS/ACM