Guarded suspension
# Guarded suspension

La guarded suspension (letteralmente sospensione controllata o sospensione protetta) è un concetto fondamentale nella programmazione concorrente e parallela. È un meccanismo di sincronizzazione che permette a un thread di sospendere la propria esecuzione fino a quando non viene soddisfatta una determinata condizione, in modo da evitare situazioni di blocco o deadlock.

## Storia

La guarded suspension è stata introdotta per la prima volta nel sistema operativo per mainframe IBM OS/360, nel 1964. Successivamente, il concetto è stato adottato da altri sistemi operativi, come ad esempio il sistema operativo Unix e il sistema operativo per computer personali Windows.

Nel campo della programmazione concorrente, la guarded suspension è stata resa popolare dal linguaggio di programmazione Ada, introdotto nel 1983, che ha introdotto il concetto di "entry" per sincronizzare i thread.

## Implementazione

Esistono diverse tecniche di implementazione della guarded suspension, ma una delle più comuni prevede l'utilizzo di una coda di attesa associata a ogni condizione di sospensione. In questo modo, quando un thread viene sospeso, viene inserito nella coda di attesa associata alla condizione corrispondente, in attesa che un altro thread lo risvegli.

Le condizioni di sospensione possono essere implementate utilizzando variabili di tipo booleano o intero, che rappresentano lo stato del sistema e vengono controllate periodicamente dai thread. Quando una condizione diventa vera, un thread può risvegliare un altro thread in attesa sulla coda di attesa corrispondente.

Altri aspetti dell'implementazione della guarded suspension possono includere la gestione delle priorità dei thread, la protezione delle variabili condivise e la prevenzione di situazioni di deadlock o livelock.

