Sei sulla pagina 1di 4

Actividad 1: Taller (Hilos)

(Actividad clase/extraclase)
Código Grupo Apellidos Nombres
31

Computadora de pruebas
Marca y modelo Toshiba Satellite C655
Procesador Intel Core i3 2.3 Ghz
RAM 6 GB
Nombre y tipo del Sistema Operativo Windows 7 – 64 Bits

1. Implemente un programa con 6 hilos de ejecución usando la siguiente información:

ID Nombre Numero de iteraciones Tiempo de espera por iteración


(60 / ID) (ID *1000 ms)
1 “A” 60 1000
2 “B” 30 2000
3 “C” 20 3000
4 “D” 15 4000
5 “E” 12 5000
6 “F” 10 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 los resultados)

Seg. Esperada Obtenida Seg. Esperada Obtenida Seg. Esperada Obtenida


1 A A 21 CA 41 A
2 AB AB 22 AB 42 FCBA
3 CA 23 A 43 A
4 ABD 24 DFCBA 44 DBA
5 EA 25 EA 45 ECA
6 FACB 26 BA 46 BA
7 A 27 CA 47 A
8 BAD 28 DBA 48 FDCBA
9 CA 29 A 49 A
10 EAB 30 EFCBA 50 EBA
11 A 31 A 51 CA
12 FDCAB 32 DBA 52 DBA
13 A 33 CA 53 A
14 BA 34 BA 54 FCBA
15 ECA 35 EA 55 EA
16 DAB 36 FDCBA 56 DBA
17 A 37 A 57 CA
18 FCAB 38 BA 58 BA
19 A 39 CA 59 A
20 EDAB 40 EDBA 60 FEDCBA

2. 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 total. Mida cuanto tiempo emplea la versión secuencial
para contar unos cuantos ficheros grandes y cuánto tarda 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 cuatro hilos de ejecución, cada uno calcula
¼ parte de la matriz resultado. Mida el tiempo que emplea cada una de las versiones.

Solución

Código fuente:

Salida:

Tiempo (seg.)
Tamaño de la matriz
Proceso principal 4 hilos
100 x 100 =
10000
500 x 500 =
250000
1000 x 1000 =
1000000

Multiplicación de dos matrices


12000

10000

8000
Tiempo (seg)

6000

4000

2000

0
0 200000 400000 600000 800000 1000000 1200000
celdas

No concurrente Concurrente

5. 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.

Solución

Código fuente:

Salida:

Potrebbero piacerti anche