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
Mecanismo de exclusión mutua (mutex)
Consideremos un recurso mutable compartido por dos hilos de ejecución diferentes (por supuesto, su número pudiera ser mayor). Si ambos hilos sólo realizan acciones de lectura sobre el recurso, no corremos riesgo alguno de corromperlo. Sin embargo, si al menos uno de los hilos ejecuta acciones de escritura, modificando el recurso, es obvio que deberemos establecer un orden de acceso entre los hilos, de forma que mientras que uno de ellos esté operando con el recurso, el resto de hilos que intenten acceder a él queden momentáneamente bloqueados. Hablamos aquí, pues, de un mecanismo de exclusión mutua entre hilos.