Junior — Middle
Quais abordagens e ferramentas em Go são usadas para organizar cálculos paralelos e assíncronos com goroutines?
sobes.tech IA
Resposta da IA
No Go, para organizar cálculos paralelos e assíncronos, usam-se goroutines, que são threads leves iniciados com a palavra-chave go.
Ferramentas e abordagens principais:
- Goroutines: permitem executar funções em paralelo sem gestão explícita de threads do sistema operativo.
- Canais (channels): usados para trocar dados de forma segura entre goroutines e para sincronização.
- select: operador para esperar várias operações em canais, permitindo lidar com dados de múltiplas fontes.
Exemplo:
package main
import (
"fmt"
"time"
)
func worker(id int, ch chan<- string) {
time.Sleep(time.Second) // simulação de trabalho
ch <- fmt.Sprintf("Trabalhador %d terminado", id)
}
func main() {
ch := make(chan string)
for i := 1; i <= 3; i++ {
go worker(i, ch)
}
for i := 1; i <= 3; i++ {
msg := <-ch
fmt.Println(msg)
}
}
Neste exemplo, três goroutines são executadas em paralelo, e o canal é usado para receber os resultados.
Assim, a combinação de goroutines e canais é a principal forma de organizar cálculos paralelos e assíncronos em Go.