Difference between revisions of "ProvaTeorica 2013.05.30"
Jump to navigation
Jump to search
<syntaxhighlight lang="C">
/* Esercizio c.1: scrivere un monitor eventp che realizzi un servizio di sincronizzazione cosi' definito:
procedure entry EP *create(unsigned value): crea un nuovo descrittore. Ogni descrittore ha un contatore associato.
Value e' il valore iniziale del contatore.
procedure entry void write(EP *d, unsigned value): se il contatore ha un valore tale che se si sommasse value causerebbe overflow, sospende il processo chiamante. In ogni caso (se la somma e' possibile senza overflow o quando la somma e' possibile senza overflow) somma value al valore del contatore.
procedure entry unsigned read(EP *d): se il contatore ha valore nullo sospende il processo chiamante fino a che il contatore diventi non nullo. In ogni caso restituisce il valore del contatore e riporta il contatore al valore zero.
procedure entry void close(EP *d): termina le operazioni del descrittore d e cancella il descrittore.
Line 2: | Line 2: | ||
<syntaxhighlight lang="C"> | <syntaxhighlight lang="C"> | ||
+ | |||
/* Esercizio c.1: scrivere un monitor eventp che realizzi un servizio di sincronizzazione cosi' definito: | /* Esercizio c.1: scrivere un monitor eventp che realizzi un servizio di sincronizzazione cosi' definito: | ||
procedure entry EP *create(unsigned value): crea un nuovo descrittore. Ogni descrittore ha un contatore associato. | procedure entry EP *create(unsigned value): crea un nuovo descrittore. Ogni descrittore ha un contatore associato. | ||
Line 73: | Line 74: | ||
delete(d); | delete(d); | ||
} | } | ||
+ | |||
</syntaxhighlight lang="C"> | </syntaxhighlight lang="C"> |