Gracias por enviar su consulta! Uno de los miembros de nuestro equipo se pondrá en contacto con usted en breve.
Gracias por enviar su reserva! Uno de los miembros de nuestro equipo se pondrá en contacto con usted en breve.
Duración 28 horas
Temario del curso
Desafíos y problemas de concurrente
- Limitaciones de hardware en plataformas - hilos de hardware, pipes, coherencia de caché
- Conceptos fundamentales relacionados con programación multi-thread (corrección de programas multi-thread, liveness, starvation, deadlocks, race conditions, atomicidad, modelos de coherencia, taxonomía de Flynn)
- Mecanismos disponibles en C++ para implementar multi-thread y multiproceso
- Implementación de la biblioteca estándar desde C++14 hasta hoy (C++2a)
- Implementación disponible en Boost - diferencias respecto a la biblioteca estándar
Procesos y hilos
- Aplicaciones multiproceso versus multi-thread
- Sistema operativo e hilos (breve resumen de implementaciones disponibles)
- Mecanismos de sincronización entre procesos y hilos
- Implementación estructural de la sincronización
- Especificidad de implementación de multi-thread en enfoque orientado a objetos (papel del patrón RAII)
Modelo de memoria en C++
- Objetos y ubicaciones en memoria
- Ordenación de operaciones y su imposición
- Relaciones: sincronización, precedencia, ordenamiento de operaciones respecto a acciones atómicas, secuencias de liberación
- Barreras de memoria
- Operaciones atómicas
Gestión de hilos en C++14 y versiones posteriores
- Clase std::thread y ejecución de hilos
- Identificación de hilo
- Anclaje y desanclaje de hilos
- Hilos y contenedores estándar
- Gestión de excepciones en C++14 para hilos
Exclusión mutua y secciones críticas
- Reglas simples de exclusión mutua
- Conceptos (tipos) de objetos bloqueantes disponibles
- Introducción rápida al manejo de tiempo en C++14 (librería chrono)
- Clases std::mutex, std::timed_mutex, std::shared_mutex y derivadas
- Patrón RAII en manejo de locks (std::lock_guard, std::unique_lock)
- Locks dependientes y pospuestos (std::lock)
- Propiedad y co-propiedad de locks e hilos
- Problema lectores-escritores
- Inicialización única
- Memoria local (privada) de hilo (std::thread_local)
Locks y sincronización de hilos
- Operaciones con semáforos
- Locks recursivos
- Locks con definición de nivel de bloqueo
- Variables de decisión y colaboración con locks
- Implementación de barreras activas y pasivas (Idle Waits, Busy Waits)
- Reinicio de hilos
- Comunicación entre hilos (modelo Actora y CSP)
Tareas asíncronas
- Eventos asíncronos y su manejo
- Futuros
- Promesas
- Tareas preparadas (packaged_task)
Tipos atómicos
- Tipos atómicos estándar
- Bandera atómica universal (std::atomic_flag)
- Plantilla de clase "std::atomic<T>" y sus especializaciones
- Funciones auxiliares (libres) de tipos std::atomic
Especificidades del diseño de API multi-thread
- Diseño de estructuras usando locks - locks granulares finos y gruesos
- Rendimiento de código concurrente - técnicas de estimación y medición
- Particionamiento de datos
- Escalabilidad de soluciones
- Gestión de errores y situaciones excepcionales en la arquitectura de aplicaciones
Pruebas y depuración de aplicaciones multi-thread
- Revisiones de código enfocadas en operaciones multi-thread
- Especificidades de pruebas de aplicaciones multi-thread
- Pruebas unitarias
- Aumentar la probabilidad de situaciones excepcionales para las pruebas
- Métodos formales de prueba de aplicaciones multi-thread
- Patrones de arquitectura de aplicaciones multi-thread y su relación con pruebas y depuración (resumen)
Gestión avanzada de hilos
- Hilos dependientes (patrón Saga)
- Evitar competencia por acceso a datos
- Controlado stop e interrupción de hilos
- Interrupción de llamadas bloqueantes
- Manejo de interrupciones
- Robo de tareas
- Interrupción de tareas durante el cierre de aplicaciones
Patrones de diseño multi-thread
- Tipos y propósitos de patrones multi-thread
- Rango de aplicación de los patrones
- Pools de hilos (Thread Pool)
- Patrón objeto activo (Active Object)
- Cola segura multi-thread (Thread Safe Queue)
- Patrón productor-consumidor (Producer Consumer)
- Patrón monitor (Monitor)
- Seguridad multi-thread de patrones GoF
Requerimientos
- Habilidad para utilizar herramientas de compilación de software en C++ en entornos GNU/Linux y/o MS Windows
- Conocimiento de programación en C++ (paradigma procedural y orientado a objetos) a nivel avanzado e intermedio
- Conocimiento de creación de código genérico (plantillas)
Reseñas (1)
Ejemplos prácticos
Jan Kaniuka - SIEC BADAWCZA LUKASIEWICZ - PRZEMYSLOWY INSTYTUT AUTOMATYKI I POMIAROW PIAP
Curso - Programowanie wielowątkowe w języku C++
Traducción Automática