Junior — Middle
Descreva como os processos de trabalho foram construídos e geridos na sua organização anterior.
sobes.tech IA
Resposta da IA
Na organização anterior, os processos de trabalho eram construídos usando goroutines e canais em Go para gerir eficientemente tarefas paralelas.
Pontos principais:
- Cada tarefa era executada numa goroutine separada, permitindo realizar múltiplos processos simultaneamente.
- Utilizavam-se canais para sincronizar e transferir dados entre goroutines, garantindo uma troca segura de informações.
- Para controlar a finalização do trabalho, era usado
sync.WaitGroup, para aguardar que todas as goroutines terminassem.
Exemplo:
var wg sync.WaitGroup
jobs := make(chan int, 10)
worker := func(id int, jobs <-chan int, wg *sync.WaitGroup) {
defer wg.Done()
for job := range jobs {
fmt.Printf("Trabalhador %d processando tarefa %d\n", id, job)
// processamento da tarefa
}
}
func main() {
for w := 1; w <= 3; w++ {
wg.Add(1)
go worker(w, jobs, &wg)
}
for j := 1; j <= 5; j++ {
jobs <- j
}
close(jobs)
wg.Wait()
}
Desta forma, os processos estavam organizados como um grupo de trabalhadores que processavam tarefas recebidas em paralelo.