Artículos de la serie:
- Introducción básica: clase std::thread y función std::async
- Paralelización de algoritmos
- Comprendiendo std::async en más detalle
- ¿Cómo funciona std::packaged_task?
- Mecanismo de exclusión mutua (mutex)
- std::jthread: hilo cooperativamente interrumpible
- Queue sincronizado
- Ejercicio resuelto de paralelización
Paralelización de algoritmos
Basándonos en la explicación proporcionada en el primer post de esta serie, es claro que la función std::async nos permitirá paralelizar de forma directa algoritmos tales como for_each, accumulate o quick_sort.
Un aspecto fundamental a tener en cuenta a la hora de paralelizar algoritmos es el de evitar la incidencia de data races, es decir, el acceso simultáneo a la misma localización en memoria por parte de diferentes hilos, siendo al menos uno de dichos accesos de escritura. No es éste un problema con el que debamos lidiar en este post, por lo que pospondremos su análisis por el momento (véase el artículo 5 de esta serie para más detalles).