Sobes.tech
Junior — Middle

Ako je implementované paralelné a sekvenčné spracovanie úloh v jazyku Go?

sobes.tech AI

Odpoveď od AI

V jazyku Go sa paralelné spracovanie úloh realizuje pomocou gorútin, čo sú ľahké vlákna, ktoré sa spúšťajú pomocou kľúčového slova go. Gorutina môže byť spustená na vykonanie funkcie asynchrónne a bude bežať paralelne s inými gorutinami.

Sekvenčné spracovanie je jednoduché volanie funkcií bez go, keď sa úlohy vykonávajú jedna po druhej.

Príklad paralelného spracovania:

package main

import (
    "fmt"
    "time"
)

func úloha(id int) {
    fmt.Printf("Úloha %d začala\n", id)
    time.Sleep(time.Second)
    fmt.Printf("Úloha %d skončila\n", id)
}

func main() {
    for i := 1; i <= 3; i++ {
        go úloha(i) // spustíme gorutinu
    }
    time.Sleep(2 * time.Second) // čakáme na dokončenie gorútin
}

V tomto príklade sú tri úlohy spustené paralelne. Ak odstránime go, budú sa úlohy vykonávať sekvenčne.

Na synchronizáciu a správu gorútin sa často používajú kanály (channels) a sync.WaitGroup.