Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Practica 3 Informe
Practica 3 Informe
En esta práctica se nos pide implementar la aplicación que se implementó en la práctica 1 pero
en esta práctica utilizaremos los mecanismos de sincronización que nos aporta los pthreads.
Implementación
Para llevar a cabo el objetivo de sincronizar los hilos, hemos creado una variable global de tipo
semáforo y variables globales que utilizaremos para la sincronización de los hilos. Las
funciones que hemos modificado respecto a la práctica 1 son: CalcularCercaOptima,
CridarCombOpt, CalcularCombinacionOptima y una parte del main para que el código tuviera
coherencia con las funciones.
CalcularCercaOptima
Es la misma función que tratamos en la práctica 1 pero en esta implementación hacemos uso
de mecanismos de sincronización. Para la sincronización utilizamos un mutex y un integer
llamado sincro; si la variable sincro es menor que el número de hilos de la aplicación, entonces
vamos obteniendo el Optimo Parcial de cada hilo. En el momento que la variable sincro no sea
menor que el número de hilos, entonces destruimos el semáforo, destruimos la barrera, la cual
hablaremos después, y destruimos el mutex.
CridarCombOpt
CalcularCombinacionOptima
En esta función la utilizamos para calcular la combinación óptima de cada hilo, cada hilo puede
hacer 25000 combinaciones como máximo, al final cuando todos los hilos han acabado sus
25000 combinaciones muestran las estadísticas de estas combinaciones.
Para la sincronización de los hilos utilizamos un semáforo el cual utilizamos para obtener el
Optimo Parcial Global de cada hilo.
Resultados de la ejecución
Ejecución concurrente
25
20
15
10
0
1 Hilo 2 Hilos 4 Hilos Secuencial
NºHilos
Como podemos ver hay una cierta mejora entre las 3 ejecuciones concurrentes en
comparación a la ejecución secuencial de la aplicación