Sobes.tech
Junior — Middle

Kā tiek īstenota uzdevumu paralēla un secīga apstrāde Go valodā?

sobes.tech AI

Atbilde no AI

Go valodā paralēla uzdevumu apstrāde tiek īstenota ar gorutīnām, kas ir vieglas pavedienas, kuras tiek uzsāktas ar atslēgas vārdu go. Gorutīnu var palaist, lai veiktu funkciju asenhroni, un tā darbosies paralēli ar citām gorutīnām.

Sekvenciāla apstrāde ir vienkārša funkciju izsaukšana bez go, kad uzdevumi tiek veikti viens pēc otra.

Paralēlas apstrādes piemērs:

package main

import (
    "fmt"
    "time"
)

func uzdevums(id int) {
    fmt.Printf("Uzdevums %d sākās\n", id)
    time.Sleep(time.Second)
    fmt.Printf("Uzdevums %d pabeigts\n", id)
}

func main() {
    for i := 1; i <= 3; i++ {
        go uzdevums(i) // palaist gorutīnu
    }
    time.Sleep(2 * time.Second) // gaidīt gorutīnu pabeigšanu
}

Šajā piemērā trīs uzdevumi tiek palaisti paralēli. Ja izņemsim go, uzdevumi tiks izpildīti secīgi.

Gorutīnu sinhronizācijai un pārvaldībai bieži izmanto kanālus (channels) un sync.WaitGroup.