Sobes.tech
Junior — Middle

Kuidas on Go keeles rakendatud ülesannete paralleelne ja järjestikune töötlemine?

sobes.tech AI

Vastus AI-lt

Go keeles toimub ülesannete paralleelne töötlemine goroutine'ide abil, mis on kerge niidid, mis käivitatakse märksõnaga go. Goroutine'i saab käivitada funktsiooni asünkroonselt täitmiseks ning see töötab paralleelselt teiste goroutine'idega.

Järjepidev töötlemine on lihtsalt funktsioonide kutsumine ilma go-ta, kus ülesanded täidetakse üksteise järel.

Näide paralleelsest töötlemisest:

package main

import (
    "fmt"
    "time"
)

func ülesanne(id int) {
    fmt.Printf("Ülesanne %d algas\n", id)
    time.Sleep(time.Second)
    fmt.Printf("Ülesanne %d lõppes\n", id)
}

func main() {
    for i := 1; i <= 3; i++ {
        go ülesanne(i) // käivitame goroutine'i
    }
    time.Sleep(2 * time.Second) // ootame goroutine'ide lõpetamist
}

Selles näites käivitatakse kolm ülesannet paralleelselt. Kui eemaldada go, täidetakse ülesanded järjestikku.

Goroutine'ide sünkroniseerimiseks ja haldamiseks kasutatakse sageli kanaleid (channels) ja sync.WaitGroup.