Exerciții
- Pornind de la scheletul de cod, în pachetul oneProducerOneConsumer implementați algoritmul Producer-Consumer pentru un buffer de dimensiune 1.
- Modificați algoritmul Producer-Consumer astfel încât să accepte mai mulți producători și mai mulți consumatori. De asemenea, modificați buffer-ul astfel încât să fie de dimensiune > 1. Porniți de la scheletul din pachetul multipleProducersMultipleConsumersNBuffer.
- Rezolvați problema din algoritmul filozofilor (pachetul philosophersProblem) și explicați-o.
- Rezolvați problema Readers-Writers folosind prima soluție cu sincronizare condiționată din curs (pachetul readersWriters.conditionedSynchronization).
- Rezolvați problema Readers-Writers, unde scriitori au prioritate (pachetul readersWriters.writerPriority).
- Rezolvați problema bărbierului (pachetul barber).
atenție
Exercițiile din cadrul acestui laborator trebuie rezolvate folosind mecanisme de sincronizare precum primitivele wait/notify/notifyAll sau semafoare. Nu se accepta soluții ce folosesc obiecte concurente.