Sobes.tech
Junior — Middle

Selgitage konkurentsi kontseptsiooni Go programmeerimiskeeles ja selle rolli paralleelsete rakenduste arendamisel

sobes.tech AI

Vastus AI-lt

Go keeles konkurentsus (concurrency) on programmi võimekus täita mitu ülesannet samaaegselt, tõhusalt kasutades protsessori ressursse. Go keeles saavutatakse see goroutine'ide abil, mis on kergekaalulised niidid, mis käivitatakse märksõnaga go.

Konkurents võimaldab kirjutada paralleelseid rakendusi, kus erinevad koodiosad töötavad samaaegselt, suurendades programmide jõudlust ja reageerimisvõimet.

Goroutine'id omavahel sünkroniseeruvad ja vahetavad andmeid kanalite (channels) kaudu, mis tagavad turvalise suhtluse ilma otseste lukustusteta.

Näide:

package main
import (
    "fmt"
    "time"
)

func worker(id int) {
    fmt.Printf("Tööline %d alustab\n", id)
    time.Sleep(time.Second)
    fmt.Printf("Tööline %d lõpeb\n", id)
}

func main() {
    for i := 1; i <= 3; i++ {
        go worker(i) // goroutine'i käivitamine
    }
    time.Sleep(2 * time.Second) // ooteaeg goroutine'ide lõpetamiseks
}

Selles näites töötavad kolm goroutine'i samaaegselt, näidates Go keele konkurentsi.