13.07.2015 Views

Ejercicios de Concurrencia (Threads)

Ejercicios de Concurrencia (Threads)

Ejercicios de Concurrencia (Threads)

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

i<strong>de</strong>ntificador, que luego imprima un mensaje que lo i<strong>de</strong>ntifique y que luego espere en labarrera por los otros threads. Introduzca este esquema en un bucle para ver comoevoluciona con el tiempo.7. Implemente un esquema productor/consumidor. Es <strong>de</strong>cir, habrá un thread que se <strong>de</strong>dicará acrear datos y otro a consumirlos. Es un esquema bastante habitual <strong>de</strong> concurrencia, con unoo varios threads creando datos y con uno o varios consumiendo dichos datos. En este casohabrá sólo uno <strong>de</strong> cada. A<strong>de</strong>más, por simplicidad, los datos a producir/consumir seránenteros, empezando por el 1, luego el 2, el 3 y así sucesivamente hasta el 30. Cada threa<strong>de</strong>sperará un tiempo aleatorio entre datos (random), entre 0 y 2 segundos, para simular eltiempo que tarda en producir/consumir cada dato. Utilice un buffer circular, con capacidadpara 4 datos, para pasar los datos entre los dos threads. Asegúrese <strong>de</strong> sincronizarloscorrectamente (wait/notify) para que el productor no meta datos en el buffer cuando esteesté lleno ni que el consumidor coja datos cuando este está vacío. Haga que el consumidorimprima los datos una vez que los haya consumido (tras la espera) para ver que no sepier<strong>de</strong> ninguno. Imprima también un mensaje cada vez que un thread tenga que esperarporque el buffer esté lleno o vacío.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!