Implemente un programa con 6 hilos de ejecución eje cución usando la siguiente información:
ID
Nombre
Numero de iteraciones (60 / ID)
Tiempo de espera por iteración (ID *1000 ms)
1 2 3 4 5 6
“A” “B” “C” “D” “E” “F”
60 30 20 15 12 10
1000 2000 3000 4000 5000 6000
Cada hilo de ejecución debe durar 60 segundos (aprox.) basado en el número de iteraciones y tiempos de espera establecidos. En cada iteración debe esperar el tiempo definido y después imprimir por pantalla el tiempo de espera (aprox.) desde el inicio del hilo (se calcula multiplicando el ID * el número de iteración) y el nombre del hilo.
Solución Código fuente
Salida (Llene la tabla con c on los resultados) Seg. 1 2 3 4
Esperada E sperada A AB
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
2.
Obtenida A AB CA ABD
Seg. 21 22 23 24
EA FACB A BAD CA EAB A FDCAB A BA ECA DAB A FCAB A EDAB
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
Esperada
Obtenida CA AB A DFCBA
Seg. 41 42 43 44
EA BA CA DBA A EFCBA A DBA CA BA EA FDCBA A BA CA EDBA
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
Esperada
Obtenida A FCBA A DBA ECA BA A FDCBA A EBA CA DBA A FCBA EA DBA CA BA A FEDCBA
Implemente un programa que lance cuatro hilos de ejecución donde cada uno de estos
incrementará un contador (variable compartida de tipo entero) 5000 veces y luego saldrá. No se preocupe de sincronizar los accesos a dicha variable. ¿Obtiene el resultado correcto? Ahora sincronice el acceso a dicha variable.
Solución no sincronizada Código fuente:
Salida:
Solución sincronizada: Código fuente:
Salida:
3.
Implemente un programa que reciba a través de sus argumentos una lista de ficheros y
cuente cuantas líneas, palabras y caracteres hay en cada fichero, así como el total entre todos los ficheros (el ‘wc’ de linux). Modifíquelo para que se cree un hilo de ejecución por cada fichero a contar, cuidando de obtener igualmente el e l total. Mida cuanto tiempo emplea la versión secuencial para contar unos cuantos ficheros grandes y cuánto tarda t arda la versión paralela para hacer lo mismo.
Solución Código fuente:
Salida: Cantidad de líneas Archivos
Líneas
Palabras
Caracteres
Tiempo (Seg)
No concurrente Concurrente
4.
Implemente un programa secuencial que calcule el producto de dos grandes matrices.
Después modifíquelo para que esta tarea se realice entre e ntre cuatro hilos de ejecución, cada uno calcula ¼ parte de la matriz resultado. Mida el tiempo que emplea cada una de las ver versiones. siones.
Solución Código fuente:
Salida:
Tamaño de la matriz
Tiempo (seg.) Proceso principal
4 hilos
100 x 100 = 10000 500 x 500 = 250000
1000 x 1000 = 1000000
Multiplicación de dos matrices 12000 10000 ) 8000 g e s ( o 6000 p m e i T 4000
2000 0 0
200000
400000
600000
800000
1000000
1200000
celdas
No concurrente
5.
Concurrente
Implemente una barrera. Una barrera es un punto de sincronización entre varios hilos. Se
caracteriza porque los hilos que van llegando a ella esperan hasta que llega el último. Por ejemplo, se puede sincronizar N hilos y hasta que el último no llegue los demás no deben poder continuar. Pruébela con el código del primer problema, es decir lancé 4 hilos, cada uno que espere un tiempo proporcional a su identificador, que luego imprima un mensaje que lo identifique y que luego espere en la barrera por los otros hilos. Introduzca este esquema en un bucle para ver como evoluciona con el tiempo.
Thank you for interesting in our services. We are a non-profit group that run this website to share documents. We need your help to maintenance this website.