next up previous contents index return to home!
Next: Attesa di una condizione Up: Meccanismi di mutua esclusione Previous: Meccanismi di mutua esclusione   Indice   Indice analitico

Un esempio: Meccanismi di mutua esclusione

In questo esempio vedremo il più semplice meccanismo di gestione della concorrenza, che è la mutua esclusione.

Esempio

L'esempio è una rivisitazione del classico problema dei lettori/scrittori. In questo caso si hanno due thread scrittori (scrittore1 e scrittore2) che ciclicamente scrivono una stringa in un buffer condiviso, aspettando un certo tempo fra una scrittura e l'altra, e un thread lettore che si deve sincronizzare con l'istante di fine scrittura sul buffer e quindi stampare la stringa risultante. L'esempio è congegnato in modo che un thread scrittore non può riscrivere i dati del buffer se prima il thread lettore non ne ha fatto al relativa stampa a video.

Si noti come, visto che l'unico strumento che abbiamo è la mutua eclusione, la sincronizzazione sulla condizione di 'fine scrittura stringa' può essere fatta solamemente tramite un polling.

Un'altra cosa da notare è che l'inizializzazione della struttura mutex è fatta in modo statico uguagliandola a una macro.


next up previous contents index
Next: Attesa di una condizione Up: Meccanismi di mutua esclusione Previous: Meccanismi di mutua esclusione   Indice   Indice analitico
Giuseppe Lipari 2002-10-27