Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

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

post(count: int = 1)

bool

try_wait()

void

wait()


Descrizioni dei metodi

void post(count: int = 1) 🔗

Abbassa il Semaphore, consentendo l'ingresso di un altro thread, o più se count è specificato.


bool try_wait() 🔗

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.