- 1 Uso de variables de condición como mecanismo de sincronización.
- 2 Ejemplos de uso de variables de condición
- 2.1 Posix Threads
- 2.2 Rust
- 3 Entrega
1 Uso de variables de condición como mecanismo de sincronización.
De esta práctica vamos a crear dos versiones del mismo ejercicio. Una
en lenguaje C
haciendo uso de posix threads y la otra en lenguaje
Rust.
Se nos pide escribir un programa que creará un número N
de hilos
sincronizados de manera que cada uno de ellos almacene una serie de
valores en un vector de enteros.
Estos valores a escribir se encontrarán entre uno inicial
y uno final
(ambos incluidos) que se conocerán cuando comience la ejecución del
programa. La cantidad de elementos a escribir en el vector será mayor
que el número de hilos creados.
El hilo principal se encargará de crear el vector
y los N
hilos además
de imprimir en el terminal los contenidos del vector desde la primera
a la última componente una vez hayan terminado todos los hilos. De
esta manera podremos comprobar que la ejecución se ha realizado de
forma correcta.
Cada uno de los hilos escribirá alternativamente y en orden los valores que le correspondan comprendidos entre el inicial y el final.
Si llamamos N
al número de hilos, s
al valor inicial y e
al valor
final entonces el hilo i-ésimo escribirá los valores \(s+i\), \(s+N+i\),
\(s+2N+i\), … y así sucesivamente, por tanto cada hilo terminará
cuando el valor que le toque escribir sea mayor que e
.
Estos hilos sincronizarán su ejecución mediante el uso de una única variable de condición.
Una vez acabados todos los hilos los datos en el vector serán: s, s+1, s+2, s+3, ... , e
, es decir, todos los números en orden entre s
y e
Veamos una representación gráfica de la evolución de este algoritmo a
lo largo del tiempo para valores de N=3
, s=1
y e=11
:
2 Ejemplos de uso de variables de condición
2.1 Posix Threads
|
|
2.2 Rust
|
|
3 Entrega
-
Se realiza en pracdlsi en las fechas allí indicadas. Puedes entregar tantas veces como quieras, solo se corrige la ultima entrega.
-
Los documentos que entregues deben ser de texto (UTF-8 preferiblemente) o PDF, no emplees otros formatos.
-
Crea una carpeta llamada
p7
y dentro de ella estarán el código y archivos de texto o PDF donde contestas a las preguntas. Esta carpeta la comprimes en un archivo llamadop7.tgz
p.e. así usando el terminal:tar cfz p7.tgz p7