Golang Errgroup -pakken brukes til å gi verktøy for synkronisering, feilutbredelse og avbestilling av kontekst for en gruppe goroutiner som utfører en felles oppgave.
La oss ta en titt på en hvordan du bruker ErrGroup -pakken.
Importer påkrevd pakke
For å bruke ErrGroup -pakken, må du importere den ved å bruke importklausulen. Eksempelkoden nedenfor viser hvordan du importerer ergroup -pakken.
Importer "Golang.org/x/sync/errgroup "WithContext -funksjonen
ErrGroup -pakken gir oss med med Context -funksjonen. Funksjonen returnerer en ny gruppe, og den tilhørende konteksten.
Hvis funksjonen som er bestått, returnerer en ikke-null feil eller ventetiden kommer tilbake, blir konteksten kansellert.
Gå func
Den andre funksjonen levert av ErrGroup -pakken er Go -funksjonen. Denne funksjonen kaller en spesifisert funksjon til en ny goroutine.
Hvis den første samtalen returnerer ikke-nullfeil, avbryter dette konteksten.
Vent func
Den tredje funksjonen er ventefunksjonen. Denne funksjonen venter en blokk til funksjonen ringer fra GO -metoden returnerer en verdi.
Eksempel
La oss se hvordan vi kan bruke ErrGroup -pakken. La oss begynne med et sett med GO -rutiner som ganske enkelt skriver ut en verdi.
pakkehovedHer har vi en for sløyfe som ganske enkelt kjører en haug med goroutines og skriver ut gjeldende verdi i loop -iterasjonen.
Hvis vi kjører koden over, merker du at den ikke skriver ut noe. Dette er fordi goroutinene er inne i hovedfunksjonen, og når hovedfunksjonen er slutt, vil GO avslutte hele programmet, enten goroutines er ferdig eller ikke.
Vi kan løse dette ved å bruke synkroniseringspakken fra standardbiblioteket. Sjekk opplæringen vår på Golang Sync for å lære mer.
https: // linuxhint.com/golang-sync/
Vi kan omdefinere koden ovenfor ved hjelp av ventegrupper som vist nedenfor:
pakkehovedHer introduserer vi "samtidighet" ved hjelp av ventegrupper. I et nøtteskall er ventegruppen en teller som lar oss hindre hovedfunksjonen fra å gå ut til alle goroutines er ferdige.
Ventegruppen fungerer ved å lage en teller som holder traktat av antall goroutiner i Que. Når en goroutine er fullført, fjerner vi den fra Que. Når Que er 0, fjerner ventegruppen utførelsen og går tilbake til hoved.
Legg merke til tilleggsfunksjonen? Vi bruker dette for å tilføre en verdi til QuainGroup Que -telleren. Når utførelsen er ferdig, fjerner vi den fullførte goroutine ved hjelp av Done Method.
Bruke errgroup
I eksemplet ovenfor behandler vi en gruppe goroutines ved hjelp av synkroniseringspakken i Go. Det er imidlertid ingen mekanisme for å håndtere noen feil. Selv om det ikke er nødvendig for et enkelt eksempel som et vist ovenfor, er det viktig for mange applikasjoner.
For det kan vi bruke ErrGroup -funksjonen som gjør det mulig å håndtere feil i en ventegruppe. Ta en titt på eksemplet nedenfor:
pakkehovedI dette eksemplet introduserer vi en enkel funksjon som genererer et tilfeldig heltall. Hvis den tilfeldige verdien er lik oppgaven, returnerer vi en feil.
Vi bruker deretter feilgruppen til å håndtere feilene ved å bruke gruppen og GO -funksjoner.
Lukking
Denne guiden dekket hvordan du introduserer og jobber med ventegrupper og håndterer feil ved hjelp av ergroup -pakken.