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.