Sobes.tech
Junior — Middle

Може ли да се реализира пълна паралелна обработка на задачи в езика Go?

sobes.tech AI

Отговор от AI

Да, в езика Go може да се реализира пълноценна паралелна обработка на задачи. Go предоставя вградена поддръжка за конкуренция чрез горутините, които са леки нишки, управлявани от средата за изпълнение на Go.

Горутините позволяват изпълнение на функции паралелно, а каналите (channels) осигуряват безопасен обмен на данни между тях.

Пример за паралелна обработка:

package main

import (
    "fmt"
    "time"
)

func worker(id int, jobs <-chan int, results chan<- int) {
    for j := range jobs {
        fmt.Printf("Работник %d обработва задача %d\n", id, j)
        time.Sleep(time.Second) // имитация на работа
        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("Резултат:", <-results)
    }
}

По този начин, Go позволява ефективно реализиране на паралелна обработка с минимални усилия.