La oss utforske noen funksjoner som er gitt i denne artikkelen.
Golang mutex
Synkroniseringen.MUTEX gir en mutex -primitiv, som gir mulighet for gjensidige unntak for delte ressurser som forhindrer raseforhold.
Eksempelbruk:
pakkehovedLes/skriv mutex
Synkroniseringen.RWMUTEX gir en leser/skribent mutex. Den tilbyr lignende metoder som en primitiv mutex, men kan tillate samtidig avlesninger ved bruk av Rlock og Runlock -metoder:
var i = 10Det forrige eksemplet kan tillate over en goroutine å lese koden. I motsetning til synkronisering.Mutex, som tillater nøyaktig en leser og en forfatter om gangen.
Waitgroups
Synkroniseringen.WaitGroup brukes til å tilby en blokkeringsmekanisme for goroutines. Ved hjelp av en ventegruppe kan du blokkere utførelsen av en funksjon til alle goroutiner er ferdig med utførelse.
Det fungerer ved å lage en teller som holder antall goroutines å vente. Når en goroutine er fullført, synker telleren med 1. Når telleren er 0, fjerner ventegruppen utførelsen.
For å tilføre en verdi til WaitGroup -telleren, kan vi bruke ADD () -metoden, som tar en heltallverdi.
For å fjerne en goroutine fra disken etter fullføring, bruker vi Done Done () -metoden. For eksempel:
pakkehovedI forrige eksempel øker vi verdien av ventegruppetelleren med 1 gjennom bruk av add () -funksjonen.
Når en goroutine er fullført, reduserer vi telleren med 1 ved hjelp av Done () -metoden. Den forrige koden skal returnere utdataene som:
Arbeider: 4 LøpingEn gang
Synkroniseringen.En gang primitiv sikrer at en funksjon bare kjøres en gang. Et eksempel er som vist nedenfor:
var en gang synkronisert.En gangKonklusjon
Denne guiden dekker noen grunnleggende og grunnleggende primitiver levert av Go Sync -pakken. I tillegg ble synkroniseringsprimitiver, som mutex, ventegruppe, basseng, lese og skrive mutex og tilstandsvariabler, diskutert. Vi håper du fant denne artikkelen nyttig. Sjekk ut andre Linux -hint -artikler for flere tips og opplæringsprogrammer.