Sobes.tech
Junior — Middle

Czy można zaimplementować pełną równoległą obsługę zadań w języku Go?

sobes.tech AI

Odpowiedź od AI

Tak, w języku Go można zaimplementować pełną równoległą obsługę zadań. Go zapewnia wbudowane wsparcie dla współbieżności poprzez goroutines, które są lekkimi wątkami zarządzanymi przez środowisko uruchomieniowe Go.

Goroutines pozwalają na uruchamianie funkcji równolegle, a kanały (channels) zapewniają bezpieczną wymianę danych między nimi.

Przykład równoległej obsługi:

package main

import (
    "fmt"
    "time"
)

func worker(id int, jobs <-chan int, results chan<- int) {
    for j := range jobs {
        fmt.Printf("Pracownik %d przetwarza zadanie %d\n", id, j)
        time.Sleep(time.Second) // symulacja pracy
        results <- j * 2
    }
}

func main() {
    jobs := make(chan int, 5)
    results := make(chan int, 5)

    for w := 1; w <= 3; w++ {
        go worker(w, jobs, results)
    }

    for j := 1; j <= 5; j++ {
        jobs <- j
    }
    close(jobs)

    for a := 1; a <= 5; a++ {
        fmt.Println("Wynik:", <-results)
    }
}

W ten sposób Go pozwala na efektywną realizację równoległego przetwarzania z minimalnym wysiłkiem.