Sobes.tech
Junior — Middle

É possível implementar um processamento paralelo completo de tarefas na linguagem Go?

sobes.tech IA

Resposta da IA

Sim, na linguagem Go é possível implementar um processamento paralelo completo de tarefas. Go fornece suporte integrado para concorrência através de goroutines, que são threads leves gerenciadas pelo runtime do Go.

As goroutines permitem executar funções em paralelo, e os canais facilitam a troca segura de dados entre elas.

Exemplo de processamento paralelo:

package main

import (
    "fmt"
    "time"
)

func worker(id int, jobs <-chan int, results chan<- int) {
    for j := range jobs {
        fmt.Printf("Trabalhador %d processando tarefa %d\n", id, j)
        time.Sleep(time.Second) // simulação de trabalho
        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("Resultado:", <-results)
    }
}

Dessa forma, Go permite implementar de forma eficiente o processamento paralelo com esforços mínimos.