Esiste una terza metafora in base alla quale impostare il modello di programmazione per la gestione della concorrenza:
- Il modello a monitor
lo scopo di questo modello è sollevare il programmatore delle complessità legate alla gestione della concorrenza che invece viene lasciata al compilatore e al sistema che eseguirà il codice.
2 esempi noti sono il Single Thread Apartment del Visual Basic 6 e le Activity dei componenti COM+.
Ma anche il Syncronize del Java e il MethodImplOptions.Synchronized di .NET.
Il modello a monitor è adatto ad applicazioni in cui ... è naturale modellare l'elaborazione con architettura client/server in cui lo stato condiviso tra i client è raramente mantenuto in in istanze di oggetti condivisi, più spesso è altrove tipo nel database.
Tipicamente c'è un thread per client e le istanze attraversate da più thread distinti sono molto poche.
Compito del programmatore è che l'esecuzione ogni metodo lasci ogni oggetto in uno stato coerente.
Il peso di questa semplificazione è un locking a grana grossa e quindi sono sufficienti poche istanze condivise per avere pochi thread in esecuzione e molti in attesa.
Tags : Progettazione Software |