Junior — Middle
È possibile applicare più meccanismi di blocco (Mutex) all'interno di una stessa funzione contemporaneamente?
sobes.tech AI
Risposta dell'AI
Sì, in Go è possibile utilizzare più mutex (Mutex) all'interno di una stessa funzione contemporaneamente. Questo è comune quando si devono proteggere risorse o parti di dati diverse che non sono collegate tra loro. La cosa principale è evitare deadlock, ovvero situazioni in cui un mutex aspetta che un altro venga rilasciato, mentre quest'ultimo aspetta il primo.
Esempio di utilizzo di più mutex:
var mu1 sync.Mutex
var mu2 sync.Mutex
func updateResources() {
mu1.Lock()
defer mu1.Unlock()
// Lavoro con la prima risorsa
mu2.Lock()
defer mu2.Unlock()
// Lavoro con la seconda risorsa
}
Per evitare deadlock, si consiglia di bloccare sempre i mutex nello stesso ordine in tutti i punti del codice.