Nell’esempio precedente abbiamo visto come gestire semplici stati di contatori usando operazioni atomiche. Per stati più complessi possiamo usare un mutex per accedere ai dati in modo sicuro attraverso più goroutine. |
|
![]() ![]()
|
|
|
|
Container contiene una mappa di contatori; dato che vogliamo
aggiornarla simultaneamente da più goroutine, aggiungiamo
un |
|
Blocchiamo il mutex prima di accedere a |
|
|
|
Nota che il valore zero di un mutex è utilizzabile così com’è, quindi non è richiesta alcuna inizializzazione qui. |
|
|
|
|
|
Questa funzione incrementa un contatore nominato in un ciclo. |
|
Eseguiamo diverse goroutine simultaneamente; nota
che tutte accedono allo stesso |
|
|
|
|
|
Aspettiamo che le goroutine finiscano |
|
Eseguendo il programma vediamo che i contatori sono stati aggiornati come previsto. |
|
Successivamente vedremo come implementare questo stesso compito di gestione dello stato usando solo goroutine e canali. |
Prossimo esempio: Goroutine con Stato.