Esploriamo alcune funzionalità fornite in questo articolo.
Golang Mutex
La sincronizzazione.Mutex fornisce un primitivo mutex, che consente esclusioni reciproche per le risorse condivise che impediscono le condizioni di gara.
Esempio di utilizzo:
Pacchetto principaleLeggi/scrivi mutex
La sincronizzazione.Rwmutex fornisce un lettore/scrittore mutex. Offre metodi simili a un Mutex primitivo ma può consentire letture simultanee usando i metodi Rlock e Runlock:
var i = 10L'esempio precedente può consentire a una goroutine di leggere il codice. A differenza della sincronizzazione.Mutex, che consente esattamente un lettore e uno scrittore alla volta.
Camerieri
La sincronizzazione.Waitgroup viene utilizzato per offrire un meccanismo di blocco per le goroutine. Utilizzando un Waitgroup, è possibile bloccare l'esecuzione di una funzione fino a quando tutte le goroutine non hanno terminato l'esecuzione.
Funziona creando un contatore che contiene il numero di goroutine da aspettare. Una volta completato una goroutine, il contatore diminuisce di 1. Una volta che il contatore è 0, il waitgroup sblocca l'esecuzione.
Per aggiungere un valore al contatore WaitGroup, possiamo usare il metodo ADD (), che prende un valore intero.
Per rimuovere una goroutine dal bancone dopo il completamento, utilizziamo il metodo Done (). Per esempio:
Pacchetto principaleNell'esempio precedente, incrediamo il valore del contatore del waitgroup di 1 attraverso l'uso della funzione ADD ().
Una volta completato una goroutine, diminuiamo il contatore di 1 usando il metodo Done (). Il codice precedente dovrebbe restituire l'output come:
Lavoratore: 4 in esecuzioneUna volta
La sincronizzazione.Una volta primitivo garantisce che una funzione funzioni solo una volta. Un esempio è come mostrato di seguito:
var una volta sincronizzato.Una voltaConclusione
Questa guida copre alcune primitive di base e fondamentale fornite dal pacchetto Go Sync. Inoltre, sono stati discussi primitivi di sincronizzazione, come mutex, waitgroup, pool, lettura e scrittura mutex e variabili di condizione. Speriamo che tu abbia trovato questo articolo utile. Dai un'occhiata ad altri articoli di suggerimento Linux per ulteriori suggerimenti e tutorial.