Semaphore
Eredita: RefCounted < Object
Un meccanismo di sincronizzazione utilizzato per controllare l'accesso a una risorsa condivisa dai Thread.
Descrizione
Un semaforo di sincronizzazione che può essere utilizzato per sincronizzare più Thread. Inizializzato a zero alla creazione. Per una versione binaria, vedi Mutex.
Attenzione: I semafori devono essere utilizzati con attenzione per evitare i deadlock.
Attenzione: Per garantire che il sistema operativo sia in grado di eseguire una pulizia corretta (nessun crash, nessun deadlock), devono essere soddisfatte queste condizioni:
Quando il conteggio dei riferimenti di un Semaphore raggiunge zero e viene quindi distrutto, nessun thread deve essere in attesa su di esso.
Quando il conteggio dei riferimenti di un Thread raggiunge zero e viene quindi distrutto, non deve essere in attesa di alcun semaforo.
Tutorial
Metodi
void |
|
try_wait() |
|
void |
wait() |
Descrizioni dei metodi
Abbassa il Semaphore, consentendo l'ingresso di un altro thread, o più se count è specificato.
Come wait(), ma non blocca l'esecuzione, quindi se il valore è zero, fallisce immediatamente e restituisce false. Se è diverso da zero, restituisce true per segnalare il successo.
void wait() 🔗
Attende il Semaphore, se il suo valore è zero, e blocca l'esecuzione finché non diventa diverso da zero.