UC3M

Grado en Ing. Telemática/Sist. Audiovisuales/Sist. de Comunicaciones

Arquitectura de Sistemas

Septiembre 2017 - Enero 2018

Hito 5: Autosalvado concurrente

Actividades previas

1. La herramienta Helgrind

Recursos

  • Fichero test.c que debes descargar en tu directorio actual.

Plan de trabajo

Conteste a las siguientes cuestiones:

  1. Lee la documentación de Helgrind. ¿Qué tipo de errores se pueden detectar con helgrind?

  2. Genere un ejecutable a partir de test.c (compilando con la opción -lpthread del gcc) y ejecútelo usando helgrind. ¿Qué información sobre errores se obtiene? Diga en la línea en qué se produce el error

2. Uso de hilos(pthreads), mutex y variables de condición

Recursos

Plan de trabajo

  1. Compile helloThreads.c, ejecútelo varias veces y entienda cómo funciona.

  2. Basándose en el ejemplo anterior de creación de hilos, race.c introduce un contador que es compartido entre los hilos e incrementado por ellos. Compile race.c y ejecútelo varias veces. ¿Cuál es el valor final del contador? ¿Por qué sucede ésto? Arregle el código usando mútex. Puede utilizar helgrind para detectar errores.

  3. De forma opcional: modifique race.c para añadir un nuevo hilo que espere hasta que el contador alcance un valor especificado (COUNT_LIMIT (Recomendación: usad helgrind para detectar errores).