Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1- Objetivo y generalidades
2- Planteo
3- Clonado de repositorio TP2(a)
4- Ejecución de programa
5- Detección del problema
6- Corrección del problema
7- Entrega de TP2(a) pusheando a Github
1- Objetivo y generalidades
El objetivo de este práctico es ver algunas de las dificultades a las que nos enfrentamos al programar
procesos multihilados (o multi-threads).
Generalmente sucede que más de un hilo debe acceder a un recurso compartido, generando
carreras críticas, por lo que es necesario implementar algún mecanismo de control de acceso para
evitar fallas o funcionamientos inesperados.
2- Planteo
- Un programador despistado (no vamos a decir quién) implementó un algoritmo que intenta modelar lo
enunciado anteriormente
- El código bigsix-con-hilos.c no estaría funcionando bien y eventualmente presenta fallas
Para aceptar la asignación de la tarea se debe estar logueado a github, de esta manera la asignación
queda asignada al usuario
–lpthread le indica al compilador que debe compilar teniendo en cuenta que se utilizan hilos de
ejecución en el código
./<nombre_archivodestino>
Corregir el programa en un nuevo archivo <nuevonombre_archivo.c> archivo para lograr que los
hermanos coman por turnos la misma cantidad de hamburguesas cada uno.
TIP: Para dicha corrección solo debe modificarse el método void *comer_hamburguesa(void *tid)
implementando la exclusión mutua con busy waiting utilizando turnos que se presentó en la clase
teórica (capítulo 2.3.3 del libro de Tanenbaum)
La salida del programa corregido, debería ser similar a lo siguiente:
Realizar una captura de pantalla con la ejecución del código modificado y corriendo correctamente
7- Entrega de TP2(a)
Realizar un PUSH al repositorio todas las capturas de pantalla realizadas, el archivo respuestas.txt, y el
código fuente <nuevonombre_archivo.c> del programa en C corregido.