Esercitazione dell'8 Novembre
Farm con autoscheduling
Si realizzi un programma in cui un processo deve calcolare n task (di
tipo Integer, il calcolo consiste semplicemente nell'incremento
dell'Integer e nell'attesa di un tempo casuale compreso fra 0 e 1
secondo) utilizzando k processi worker.
Ogni processo worker e' in grado di calcolare un task. I task vengono
distribuiti dal processo master ai soli worker che ne fanno richiesta.
Quindi il generico processo worker eseguira' un ciclo in cui:
- spedisce la richiesta di un task al master
- ottenuto il task calcola il risultato
- e lo rispedisce al master
Il master quindi lavora accettando richieste di k worker e rispondendo
con task da calcolare.
Attenzione : la terminazione dei processi worker non puo'
essere basata solo su parametri n e k, dato che in generale non e'
possibile prevedere quale sarà la distribuzione dei task
ottenuta a tempo di esecuzione. Si assuma che se non arrivano task per
un tempo ragionevolmente lungo, i task siano finiti, e quindi i
worker possano terminare.