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.
Checking the stable version of the documentation...
Mutex
Eredita: RefCounted < Object
Un Semaphore binario per la sincronizzazione di più Thread.
Descrizione
Un mutex di sincronizzazione (mutua esclusione). Serve per sincronizzare più Thread ed è equivalente a un Semaphore binario. Garantisce che solo un thread alla volta possa accedere a una sezione critica.
Questo è un mutex rientrante, il che significa che può essere bloccato più volte da un thread, a condizione che lo sblocchi altrettante volte.
Attenzione: Per garantire una pulizia corretta senza arresti anomali o deadlock, devono essere soddisfatte le seguenti condizioni:
Quando il conteggio dei riferimenti di un Mutex raggiunge zero e viene quindi distrutto, nessun thread (incluso quello su cui avverrà la distruzione) deve averlo bloccato.
Quando il conteggio dei riferimenti di un Thread raggiunge zero e viene quindi distrutto, non deve avere alcun mutex bloccato.
Tutorial
Metodi
void |
lock() |
try_lock() |
|
void |
unlock() |
Descrizioni dei metodi
void lock() 🔗
Blocca questo Mutex, blocca finché non viene sbloccato dal proprietario attuale.
Nota: Questa funzione restituisce senza bloccare se il thread ha già il possesso del mutex.
Tenta di bloccare questo Mutex, ma non blocca. Restituisce true in caso di successo, altrimenti false.
Nota: Questa funzione restituisce true se il thread ha già il possesso del mutex.
void unlock() 🔗
Unlocks this Mutex, leaving it to other threads.
Note: If a thread called lock() or try_lock() multiple times while already having ownership of the mutex, it must also call unlock() the same number of times in order to unlock it correctly.
Warning: Calling unlock() more times than lock() on a given thread, thus ending up trying to unlock a non-locked mutex, is wrong and may causes crashes or deadlocks.